zuplo 6.67.32 → 6.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/docs/_index.md +44 -0
- package/docs/ai-gateway/apps.mdx +28 -0
- package/docs/ai-gateway/custom-providers.mdx +54 -0
- package/docs/ai-gateway/getting-started.mdx +224 -0
- package/docs/ai-gateway/guardrails.mdx +65 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
- package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
- package/docs/ai-gateway/integrations/codex.mdx +78 -0
- package/docs/ai-gateway/integrations/goose.mdx +104 -0
- package/docs/ai-gateway/integrations/langchain.mdx +66 -0
- package/docs/ai-gateway/integrations/openai.mdx +99 -0
- package/docs/ai-gateway/introduction.mdx +85 -0
- package/docs/ai-gateway/managing-apps.mdx +46 -0
- package/docs/ai-gateway/managing-providers.mdx +66 -0
- package/docs/ai-gateway/managing-teams.mdx +63 -0
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
- package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
- package/docs/ai-gateway/providers.mdx +32 -0
- package/docs/ai-gateway/teams.mdx +38 -0
- package/docs/ai-gateway/universal-api.mdx +43 -0
- package/docs/ai-gateway/usage-limits.mdx +89 -0
- package/docs/api-management/introduction.md +127 -0
- package/docs/articles/accounts/audit-logs.mdx +227 -0
- package/docs/articles/accounts/billing.mdx +25 -0
- package/docs/articles/accounts/default-api-key.mdx +30 -0
- package/docs/articles/accounts/delete-account.mdx +36 -0
- package/docs/articles/accounts/enterprise-sso.mdx +116 -0
- package/docs/articles/accounts/managing-account-members.mdx +45 -0
- package/docs/articles/accounts/managing-project-members.mdx +37 -0
- package/docs/articles/accounts/members-and-roles.mdx +21 -0
- package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
- package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
- package/docs/articles/add-api-to-backstage.mdx +216 -0
- package/docs/articles/advanced-path-matching.mdx +139 -0
- package/docs/articles/api-key-administration.mdx +47 -0
- package/docs/articles/api-key-api.mdx +220 -0
- package/docs/articles/api-key-authentication.mdx +195 -0
- package/docs/articles/api-key-buckets.mdx +61 -0
- package/docs/articles/api-key-end-users.mdx +52 -0
- package/docs/articles/api-key-leak-detection.mdx +75 -0
- package/docs/articles/api-key-management.mdx +100 -0
- package/docs/articles/api-key-react-component.mdx +90 -0
- package/docs/articles/api-key-service-limits.mdx +14 -0
- package/docs/articles/archiving-requests-to-storage.mdx +119 -0
- package/docs/articles/branch-based-deployments.mdx +184 -0
- package/docs/articles/bypass-policy-for-testing.mdx +117 -0
- package/docs/articles/check-ip-address.mdx +17 -0
- package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
- package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
- package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
- package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
- package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
- package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
- package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
- package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
- package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
- package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
- package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
- package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
- package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
- package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
- package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
- package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
- package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
- package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
- package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
- package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
- package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
- package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
- package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
- package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
- package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
- package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
- package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
- package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
- package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
- package/docs/articles/composite-policy-reference.mdx +284 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
- package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
- package/docs/articles/convert-urls-to-openapi.mdx +62 -0
- package/docs/articles/cors.mdx +447 -0
- package/docs/articles/custom-audit-log-policy.mdx +95 -0
- package/docs/articles/custom-ci-cd-azure.mdx +81 -0
- package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
- package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
- package/docs/articles/custom-ci-cd-github.mdx +99 -0
- package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
- package/docs/articles/custom-ci-cd.mdx +82 -0
- package/docs/articles/custom-code-patterns.md +418 -0
- package/docs/articles/custom-domains.mdx +258 -0
- package/docs/articles/custom-logging-example.mdx +139 -0
- package/docs/articles/ddos-protection.mdx +138 -0
- package/docs/articles/development-options.mdx +49 -0
- package/docs/articles/environment-variables.mdx +134 -0
- package/docs/articles/environments.mdx +143 -0
- package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
- package/docs/articles/github-deployment-testing.mdx +101 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
- package/docs/articles/graphql-security.mdx +180 -0
- package/docs/articles/handling-form-data.mdx +61 -0
- package/docs/articles/health-checks.mdx +109 -0
- package/docs/articles/hosting-options.mdx +70 -0
- package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
- package/docs/articles/limits.mdx +98 -0
- package/docs/articles/local-development-debugging.mdx +44 -0
- package/docs/articles/local-development-env-variables.mdx +23 -0
- package/docs/articles/local-development-installing-packages.mdx +23 -0
- package/docs/articles/local-development-routes-designer.mdx +27 -0
- package/docs/articles/local-development-services.mdx +40 -0
- package/docs/articles/local-development-troubleshooting.mdx +56 -0
- package/docs/articles/local-development.mdx +81 -0
- package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
- package/docs/articles/log-plugin-datadog.mdx +84 -0
- package/docs/articles/log-plugin-dynatrace.mdx +75 -0
- package/docs/articles/log-plugin-gcp.mdx +75 -0
- package/docs/articles/log-plugin-loki.mdx +136 -0
- package/docs/articles/log-plugin-new-relic.mdx +84 -0
- package/docs/articles/log-plugin-splunk.mdx +104 -0
- package/docs/articles/log-plugin-sumo.mdx +73 -0
- package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
- package/docs/articles/log-request-response-data.mdx +398 -0
- package/docs/articles/logging.mdx +115 -0
- package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
- package/docs/articles/mcp-quickstart.mdx +135 -0
- package/docs/articles/metrics-plugins.mdx +371 -0
- package/docs/articles/migrate-from-apigee.md +408 -0
- package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
- package/docs/articles/migrate-from-azure-apim.md +292 -0
- package/docs/articles/migrate-from-kong.md +300 -0
- package/docs/articles/migration-overview.md +81 -0
- package/docs/articles/monetization/api-access.mdx +69 -0
- package/docs/articles/monetization/billing-models.md +520 -0
- package/docs/articles/monetization/developer-portal.md +167 -0
- package/docs/articles/monetization/features.mdx +98 -0
- package/docs/articles/monetization/index.mdx +113 -0
- package/docs/articles/monetization/meters.mdx +135 -0
- package/docs/articles/monetization/monetization-policy.md +314 -0
- package/docs/articles/monetization/plan-examples.mdx +366 -0
- package/docs/articles/monetization/plans.mdx +266 -0
- package/docs/articles/monetization/pricing-models.mdx +225 -0
- package/docs/articles/monetization/private-plans.md +154 -0
- package/docs/articles/monetization/quickstart.md +355 -0
- package/docs/articles/monetization/rate-cards.mdx +171 -0
- package/docs/articles/monetization/stripe-integration.md +195 -0
- package/docs/articles/monetization/subscription-lifecycle.md +298 -0
- package/docs/articles/monetization/tax-collection.md +166 -0
- package/docs/articles/monetization/troubleshooting.md +272 -0
- package/docs/articles/monetization-custom.mdx +71 -0
- package/docs/articles/monetization-integrations.mdx +104 -0
- package/docs/articles/monitoring-your-gateway.mdx +53 -0
- package/docs/articles/monorepo-deployment.mdx +350 -0
- package/docs/articles/multiple-auth-policies.mdx +81 -0
- package/docs/articles/non-standard-ports.mdx +30 -0
- package/docs/articles/oauth-authentication.mdx +54 -0
- package/docs/articles/openapi-server-urls.mdx +60 -0
- package/docs/articles/openapi.mdx +130 -0
- package/docs/articles/opentelemetry.mdx +250 -0
- package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
- package/docs/articles/performance-testing.mdx +304 -0
- package/docs/articles/plugin-akamai-api-security.mdx +76 -0
- package/docs/articles/plugin-azure-blob.mdx +73 -0
- package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
- package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
- package/docs/articles/policies.mdx +33 -0
- package/docs/articles/rename-or-move-project.mdx +39 -0
- package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
- package/docs/articles/routing.mdx +193 -0
- package/docs/articles/s3-signed-url-uploads.mdx +521 -0
- package/docs/articles/secure-tunnel.mdx +84 -0
- package/docs/articles/securing-backend-mtls.mdx +268 -0
- package/docs/articles/securing-your-backend.mdx +148 -0
- package/docs/articles/security.mdx +105 -0
- package/docs/articles/sharing-code-across-projects.mdx +412 -0
- package/docs/articles/source-control-setup-azure.mdx +13 -0
- package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
- package/docs/articles/source-control-setup-github.mdx +172 -0
- package/docs/articles/source-control-setup-gitlab.mdx +12 -0
- package/docs/articles/source-control.mdx +80 -0
- package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
- package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
- package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
- package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
- package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
- package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
- package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
- package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
- package/docs/articles/support.mdx +144 -0
- package/docs/articles/terraform.mdx +114 -0
- package/docs/articles/testing-graphql.mdx +34 -0
- package/docs/articles/testing.mdx +522 -0
- package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
- package/docs/articles/troubleshooting.md +302 -0
- package/docs/articles/tsconfig.mdx +105 -0
- package/docs/articles/tunnel-setup.mdx +195 -0
- package/docs/articles/tunnel-troubleshooting.mdx +50 -0
- package/docs/articles/update-zup-in-github-action.mdx +110 -0
- package/docs/articles/use-openapi-extension-data.mdx +79 -0
- package/docs/articles/users/multifactor-authentication.mdx +64 -0
- package/docs/articles/users/profile.mdx +13 -0
- package/docs/articles/versioning-on-zuplo.mdx +89 -0
- package/docs/articles/waf-ddos-akamai.md +133 -0
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
- package/docs/articles/waf-ddos-fastly.mdx +251 -0
- package/docs/articles/waf-ddos.mdx +140 -0
- package/docs/articles/zuplo-waf.mdx +156 -0
- package/docs/ask.mdx +3 -0
- package/docs/cli/authentication.mdx +56 -0
- package/docs/cli/connectivity.mdx +38 -0
- package/docs/cli/create-zuplo-api.mdx +80 -0
- package/docs/cli/delete.mdx +79 -0
- package/docs/cli/deploy.mdx +156 -0
- package/docs/cli/deploy.partial.mdx +46 -0
- package/docs/cli/dev.mdx +115 -0
- package/docs/cli/docs.mdx +66 -0
- package/docs/cli/editor.mdx +50 -0
- package/docs/cli/global-options.mdx +19 -0
- package/docs/cli/init.mdx +74 -0
- package/docs/cli/link.mdx +74 -0
- package/docs/cli/list.mdx +55 -0
- package/docs/cli/mtls-certificate-create.mdx +94 -0
- package/docs/cli/mtls-certificate-delete.mdx +55 -0
- package/docs/cli/mtls-certificate-describe.mdx +55 -0
- package/docs/cli/mtls-certificate-disable.mdx +55 -0
- package/docs/cli/mtls-certificate-list.mdx +47 -0
- package/docs/cli/mtls-certificate-update.mdx +72 -0
- package/docs/cli/openapi-convert.mdx +111 -0
- package/docs/cli/openapi-merge.mdx +138 -0
- package/docs/cli/openapi-merge.partial.mdx +29 -0
- package/docs/cli/openapi-overlay.mdx +123 -0
- package/docs/cli/overview.mdx +78 -0
- package/docs/cli/project-create.mdx +43 -0
- package/docs/cli/source-migrate.mdx +18 -0
- package/docs/cli/source-upgrade.mdx +41 -0
- package/docs/cli/test.mdx +70 -0
- package/docs/cli/test.partial.mdx +7 -0
- package/docs/cli/tunnel-create.mdx +53 -0
- package/docs/cli/tunnel-create.partial.mdx +9 -0
- package/docs/cli/tunnel-delete.mdx +35 -0
- package/docs/cli/tunnel-delete.partial.mdx +9 -0
- package/docs/cli/tunnel-describe.mdx +45 -0
- package/docs/cli/tunnel-describe.partial.mdx +5 -0
- package/docs/cli/tunnel-list.mdx +35 -0
- package/docs/cli/tunnel-list.partial.mdx +9 -0
- package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
- package/docs/cli/tunnel-rotate-token.mdx +39 -0
- package/docs/cli/tunnel-services-describe.mdx +45 -0
- package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
- package/docs/cli/tunnel-services-update.mdx +48 -0
- package/docs/cli/variable-create.mdx +91 -0
- package/docs/cli/variable-create.partial.mdx +5 -0
- package/docs/cli/variable-update.mdx +75 -0
- package/docs/cli/variable-update.partial.mdx +5 -0
- package/docs/concepts/api-keys.md +146 -0
- package/docs/concepts/authentication.mdx +109 -0
- package/docs/concepts/how-zuplo-works.mdx +120 -0
- package/docs/concepts/project-structure.mdx +174 -0
- package/docs/concepts/rate-limiting.md +246 -0
- package/docs/concepts/request-lifecycle.mdx +56 -0
- package/docs/concepts/source-control-and-deployment.mdx +229 -0
- package/docs/conferences/conference-prize-terms.mdx +80 -0
- package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
- package/docs/dedicated/akamai/architecture.mdx +280 -0
- package/docs/dedicated/akamai/caching.mdx +212 -0
- package/docs/dedicated/akamai/cdn.mdx +156 -0
- package/docs/dedicated/architecture.mdx +208 -0
- package/docs/dedicated/custom-domains.mdx +31 -0
- package/docs/dedicated/federated-gateways.mdx +80 -0
- package/docs/dedicated/networking.mdx +69 -0
- package/docs/dedicated/overview.mdx +80 -0
- package/docs/dedicated/source-control.mdx +63 -0
- package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
- package/docs/dev-portal/introduction.mdx +65 -0
- package/docs/dev-portal/local-development.mdx +72 -0
- package/docs/dev-portal/migration.mdx +526 -0
- package/docs/dev-portal/node-modules.mdx +45 -0
- package/docs/dev-portal/updating.mdx +28 -0
- package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
- package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
- package/docs/dev-portal/zudoku/components/button.mdx +132 -0
- package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
- package/docs/dev-portal/zudoku/components/card.mdx +104 -0
- package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
- package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
- package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
- package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
- package/docs/dev-portal/zudoku/components/head.mdx +199 -0
- package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
- package/docs/dev-portal/zudoku/components/input.mdx +96 -0
- package/docs/dev-portal/zudoku/components/label.mdx +86 -0
- package/docs/dev-portal/zudoku/components/link.mdx +242 -0
- package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
- package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
- package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
- package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
- package/docs/dev-portal/zudoku/components/select.mdx +176 -0
- package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
- package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
- package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
- package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
- package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
- package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
- package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
- package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
- package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
- package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
- package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
- package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
- package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
- package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
- package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
- package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
- package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
- package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
- package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
- package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
- package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
- package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
- package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
- package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
- package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
- package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
- package/docs/dev-portal/zudoku/configuration/search.md +169 -0
- package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
- package/docs/dev-portal/zudoku/configuration/site.md +124 -0
- package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
- package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
- package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
- package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
- package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
- package/docs/dev-portal/zudoku/extending/events.md +124 -0
- package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
- package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
- package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
- package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
- package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
- package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
- package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
- package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
- package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
- package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
- package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
- package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
- package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
- package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
- package/docs/dev-portal/zudoku/plugins.md +5 -0
- package/docs/dev-portal/zudoku/writing.mdx +72 -0
- package/docs/errors/bad-request.mdx +39 -0
- package/docs/errors/build-error.mdx +45 -0
- package/docs/errors/fatal-project-error.mdx +39 -0
- package/docs/errors/gateway-timeout.mdx +33 -0
- package/docs/errors/get-head-body-error.mdx +41 -0
- package/docs/errors/main-mod-error.mdx +40 -0
- package/docs/errors/no-project-set.mdx +41 -0
- package/docs/errors/not-found.mdx +43 -0
- package/docs/errors/rate-limit-exceeded.mdx +31 -0
- package/docs/errors/schema-validation-failed.mdx +51 -0
- package/docs/errors/system-configuration-error.mdx +44 -0
- package/docs/errors/unauthorized.mdx +50 -0
- package/docs/errors/unknown-error.mdx +42 -0
- package/docs/errors.mdx +14 -0
- package/docs/guides/canary-routing-for-employees.mdx +385 -0
- package/docs/guides/geolocation-backend-routing.mdx +404 -0
- package/docs/guides/modify-openapi-paths.mdx +371 -0
- package/docs/guides/openapi-overlays.mdx +492 -0
- package/docs/guides/overview.mdx +12 -0
- package/docs/guides/user-based-backend-routing.mdx +437 -0
- package/docs/handlers/aws-lambda.mdx +201 -0
- package/docs/handlers/custom-handler.mdx +112 -0
- package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
- package/docs/handlers/mcp-server.mdx +730 -0
- package/docs/handlers/openapi.mdx +78 -0
- package/docs/handlers/redirect.mdx +115 -0
- package/docs/handlers/system-handlers.mdx +41 -0
- package/docs/handlers/url-forward.mdx +204 -0
- package/docs/handlers/url-rewrite.mdx +224 -0
- package/docs/handlers/websocket-handler.mdx +154 -0
- package/docs/home.mdx +6 -0
- package/docs/managed-edge/overview.md +78 -0
- package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
- package/docs/mcp-server/custom-tools.mdx +487 -0
- package/docs/mcp-server/graphql.mdx +241 -0
- package/docs/mcp-server/introduction.mdx +122 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
- package/docs/mcp-server/prompts.mdx +283 -0
- package/docs/mcp-server/resources.mdx +288 -0
- package/docs/mcp-server/testing.mdx +53 -0
- package/docs/mcp-server/tools.mdx +306 -0
- package/docs/policies/_index.md +92 -0
- package/docs/policies/ab-test-inbound/intro.md +8 -0
- package/docs/policies/ab-test-inbound/policy.ts +14 -0
- package/docs/policies/ab-test-inbound/schema.json +27 -0
- package/docs/policies/ab-test-outbound/intro.md +8 -0
- package/docs/policies/ab-test-outbound/policy.ts +26 -0
- package/docs/policies/ab-test-outbound/schema.json +27 -0
- package/docs/policies/acl-policy-inbound/intro.md +5 -0
- package/docs/policies/acl-policy-inbound/policy.ts +32 -0
- package/docs/policies/acl-policy-inbound/schema.json +52 -0
- package/docs/policies/akamai-ai-firewall/schema.json +98 -0
- package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
- package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
- package/docs/policies/api-key-inbound/doc.md +77 -0
- package/docs/policies/api-key-inbound/intro.md +30 -0
- package/docs/policies/api-key-inbound/schema.json +84 -0
- package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
- package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
- package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
- package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
- package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
- package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
- package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
- package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
- package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
- package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
- package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
- package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
- package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
- package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
- package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
- package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
- package/docs/policies/audit-log-inbound/doc.md +78 -0
- package/docs/policies/audit-log-inbound/intro.md +10 -0
- package/docs/policies/audit-log-inbound/schema.json +81 -0
- package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
- package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/authzen-inbound/doc.md +24 -0
- package/docs/policies/authzen-inbound/intro.md +31 -0
- package/docs/policies/authzen-inbound/schema.json +126 -0
- package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
- package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
- package/docs/policies/basic-auth-inbound/intro.md +9 -0
- package/docs/policies/basic-auth-inbound/schema.json +99 -0
- package/docs/policies/bot-detection-inbound/intro.md +4 -0
- package/docs/policies/bot-detection-inbound/schema.json +56 -0
- package/docs/policies/brownout-inbound/doc.md +55 -0
- package/docs/policies/brownout-inbound/intro.md +12 -0
- package/docs/policies/brownout-inbound/schema.json +115 -0
- package/docs/policies/caching-inbound/doc.md +209 -0
- package/docs/policies/caching-inbound/intro.md +23 -0
- package/docs/policies/caching-inbound/schema.json +98 -0
- package/docs/policies/change-method-inbound/schema.json +56 -0
- package/docs/policies/clear-headers-inbound/schema.json +59 -0
- package/docs/policies/clear-headers-outbound/schema.json +59 -0
- package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
- package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
- package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
- package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
- package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
- package/docs/policies/composite-inbound/doc.md +69 -0
- package/docs/policies/composite-inbound/intro.md +15 -0
- package/docs/policies/composite-inbound/schema.json +59 -0
- package/docs/policies/composite-outbound/intro.md +6 -0
- package/docs/policies/composite-outbound/schema.json +59 -0
- package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
- package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
- package/docs/policies/custom-code-inbound/doc.md +267 -0
- package/docs/policies/custom-code-inbound/intro.md +2 -0
- package/docs/policies/custom-code-inbound/schema.json +48 -0
- package/docs/policies/custom-code-outbound/doc.md +235 -0
- package/docs/policies/custom-code-outbound/intro.md +2 -0
- package/docs/policies/custom-code-outbound/schema.json +43 -0
- package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
- package/docs/policies/geo-filter-inbound/doc.md +33 -0
- package/docs/policies/geo-filter-inbound/schema.json +108 -0
- package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
- package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
- package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
- package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
- package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
- package/docs/policies/hmac-auth-inbound/doc.md +30 -0
- package/docs/policies/hmac-auth-inbound/intro.md +10 -0
- package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
- package/docs/policies/hmac-auth-inbound/schema.json +53 -0
- package/docs/policies/http-deprecation-outbound/doc.md +73 -0
- package/docs/policies/http-deprecation-outbound/schema.json +83 -0
- package/docs/policies/ip-restriction-inbound/intro.md +8 -0
- package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
- package/docs/policies/ip-restriction-inbound/schema.json +58 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
- package/docs/policies/ldap-auth-inbound/schema.json +56 -0
- package/docs/policies/mock-api-inbound/schema.json +72 -0
- package/docs/policies/moesif-inbound/doc.md +44 -0
- package/docs/policies/moesif-inbound/intro.md +6 -0
- package/docs/policies/moesif-inbound/schema.json +68 -0
- package/docs/policies/monetization-inbound/doc.md +87 -0
- package/docs/policies/monetization-inbound/intro.md +6 -0
- package/docs/policies/monetization-inbound/schema.json +102 -0
- package/docs/policies/mtls-auth-inbound/intro.md +6 -0
- package/docs/policies/mtls-auth-inbound/schema.json +68 -0
- package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
- package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
- package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
- package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
- package/docs/policies/openfga-authz-inbound/doc.md +207 -0
- package/docs/policies/openfga-authz-inbound/intro.md +17 -0
- package/docs/policies/openfga-authz-inbound/schema.json +191 -0
- package/docs/policies/openmeter-inbound/doc.md +163 -0
- package/docs/policies/openmeter-inbound/intro.md +18 -0
- package/docs/policies/openmeter-inbound/schema.json +183 -0
- package/docs/policies/prompt-injection-outbound/doc.md +106 -0
- package/docs/policies/prompt-injection-outbound/intro.md +4 -0
- package/docs/policies/prompt-injection-outbound/schema.json +74 -0
- package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
- package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
- package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
- package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
- package/docs/policies/quota-inbound/doc.md +235 -0
- package/docs/policies/quota-inbound/intro.md +7 -0
- package/docs/policies/quota-inbound/schema.json +133 -0
- package/docs/policies/rate-limit-inbound/doc.md +78 -0
- package/docs/policies/rate-limit-inbound/intro.md +30 -0
- package/docs/policies/rate-limit-inbound/schema.json +134 -0
- package/docs/policies/rbac-policy-inbound/intro.md +3 -0
- package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
- package/docs/policies/rbac-policy-inbound/schema.json +52 -0
- package/docs/policies/readme-metrics-inbound/doc.md +1 -0
- package/docs/policies/readme-metrics-inbound/intro.md +3 -0
- package/docs/policies/readme-metrics-inbound/schema.json +84 -0
- package/docs/policies/remove-headers-inbound/schema.json +59 -0
- package/docs/policies/remove-headers-outbound/schema.json +59 -0
- package/docs/policies/remove-query-params-inbound/schema.json +59 -0
- package/docs/policies/replace-string-outbound/schema.json +69 -0
- package/docs/policies/request-size-limit-inbound/schema.json +60 -0
- package/docs/policies/request-validation-inbound/doc.md +72 -0
- package/docs/policies/request-validation-inbound/intro.md +24 -0
- package/docs/policies/request-validation-inbound/schema.json +98 -0
- package/docs/policies/require-origin-inbound/intro.md +12 -0
- package/docs/policies/require-origin-inbound/schema.json +65 -0
- package/docs/policies/secret-masking-outbound/doc.md +41 -0
- package/docs/policies/secret-masking-outbound/intro.md +13 -0
- package/docs/policies/secret-masking-outbound/schema.json +65 -0
- package/docs/policies/semantic-cache-inbound/doc.md +63 -0
- package/docs/policies/semantic-cache-inbound/intro.md +4 -0
- package/docs/policies/semantic-cache-inbound/schema.json +179 -0
- package/docs/policies/set-body-inbound/intro.md +7 -0
- package/docs/policies/set-body-inbound/schema.json +56 -0
- package/docs/policies/set-headers-inbound/doc.md +41 -0
- package/docs/policies/set-headers-inbound/intro.md +2 -0
- package/docs/policies/set-headers-inbound/schema.json +83 -0
- package/docs/policies/set-headers-outbound/schema.json +83 -0
- package/docs/policies/set-query-params-inbound/schema.json +83 -0
- package/docs/policies/set-status-outbound/schema.json +62 -0
- package/docs/policies/sleep-inbound/schema.json +56 -0
- package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
- package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
- package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
- package/docs/policies/transform-body-inbound/intro.md +8 -0
- package/docs/policies/transform-body-inbound/policy.ts +16 -0
- package/docs/policies/transform-body-inbound/schema.json +27 -0
- package/docs/policies/transform-body-outbound/intro.md +8 -0
- package/docs/policies/transform-body-outbound/policy.ts +19 -0
- package/docs/policies/transform-body-outbound/schema.json +27 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
- package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
- package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
- package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
- package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
- package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
- package/docs/policies/xml-to-json-outbound/doc.md +71 -0
- package/docs/policies/xml-to-json-outbound/intro.md +4 -0
- package/docs/policies/xml-to-json-outbound/schema.json +117 -0
- package/docs/programmable-api/audit-log.mdx +74 -0
- package/docs/programmable-api/background-dispatcher.mdx +124 -0
- package/docs/programmable-api/background-loader.mdx +104 -0
- package/docs/programmable-api/cache.mdx +186 -0
- package/docs/programmable-api/compatibility-dates.mdx +201 -0
- package/docs/programmable-api/console-logging.mdx +48 -0
- package/docs/programmable-api/context-data.mdx +127 -0
- package/docs/programmable-api/custom-cors-policy.mdx +64 -0
- package/docs/programmable-api/environment.mdx +328 -0
- package/docs/programmable-api/hooks.mdx +569 -0
- package/docs/programmable-api/http-problems.mdx +385 -0
- package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
- package/docs/programmable-api/logger.mdx +223 -0
- package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
- package/docs/programmable-api/node-modules.mdx +67 -0
- package/docs/programmable-api/not-found-handler.mdx +47 -0
- package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
- package/docs/programmable-api/overview.mdx +213 -0
- package/docs/programmable-api/problem-response-formatter.mdx +183 -0
- package/docs/programmable-api/request-user.mdx +289 -0
- package/docs/programmable-api/reusing-code.mdx +26 -0
- package/docs/programmable-api/route-raw.mdx +55 -0
- package/docs/programmable-api/runtime-behaviors.mdx +25 -0
- package/docs/programmable-api/runtime-errors.mdx +246 -0
- package/docs/programmable-api/runtime-extensions.mdx +340 -0
- package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
- package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
- package/docs/programmable-api/web-crypto-apis.mdx +219 -0
- package/docs/programmable-api/web-standard-apis.mdx +109 -0
- package/docs/programmable-api/zone-cache.mdx +131 -0
- package/docs/programmable-api/zp-body-removed.mdx +32 -0
- package/docs/programmable-api/zuplo-context.mdx +414 -0
- package/docs/programmable-api/zuplo-id-token.mdx +90 -0
- package/docs/programmable-api/zuplo-json.mdx +91 -0
- package/docs/programmable-api/zuplo-request.mdx +200 -0
- package/docs/sample-apis.mdx +78 -0
- package/docs/self-hosted/overview.md +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,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
|
+
```
|