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