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,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 3 - API Key Authentication
|
|
3
|
+
sidebar_label: "3 - API Key Auth"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="local"
|
|
8
|
+
alternateLink="/articles/step-3-add-api-key-auth"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this guide we'll add API Key authentication to a route. You can do this for
|
|
12
|
+
any Zuplo project but will need a route, consider completing
|
|
13
|
+
[Step 1](./step-1-setup-basic-gateway-local.mdx) first.
|
|
14
|
+
|
|
15
|
+
API Key authentication is one of our most popular **policies** as implementing
|
|
16
|
+
this authentication method is considered one of the easiest to use by developers
|
|
17
|
+
but hard for API developers to get right. We also support JWT tokens and most
|
|
18
|
+
other authentication methods.
|
|
19
|
+
|
|
20
|
+
:::info{title="What's a Policy?"}
|
|
21
|
+
|
|
22
|
+
[Policies](./policies.mdx) are modules that can intercept and transform an
|
|
23
|
+
incoming request or outgoing response. Zuplo offers a wide range of policies
|
|
24
|
+
built-in (including API key authentication) to save you time. You can check out
|
|
25
|
+
[the full list](./policies.mdx).
|
|
26
|
+
|
|
27
|
+
:::
|
|
28
|
+
|
|
29
|
+
Let's get started.
|
|
30
|
+
|
|
31
|
+
<Stepper>
|
|
32
|
+
|
|
33
|
+
1. Link your Local Project
|
|
34
|
+
|
|
35
|
+
When developing locally with Zuplo, you can "link" your local project to
|
|
36
|
+
your Zuplo project using the `zuplo link` command. This allows you to test
|
|
37
|
+
your changes in a real environment.
|
|
38
|
+
|
|
39
|
+
When you run the command you will be prompted to select your Zuplo account,
|
|
40
|
+
project, and environment. You can pick any environment.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx zuplo link
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
After your project is linked, environment variables and other configuration
|
|
47
|
+
from your Zuplo project will be available in your local development
|
|
48
|
+
environment.
|
|
49
|
+
|
|
50
|
+
1. Start your Project
|
|
51
|
+
|
|
52
|
+
You can start your project using the following command:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx zuplo dev
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
After your project is started, you can open the local route designer at
|
|
59
|
+
http://localhost:9100.
|
|
60
|
+
|
|
61
|
+
1. Add the API Key Authentication Policy
|
|
62
|
+
|
|
63
|
+
Open the local **Route Designer** by navigating to http://localhost:9100/.
|
|
64
|
+
Select your route and click **Add Policy** on the incoming request policies
|
|
65
|
+
section.
|
|
66
|
+
|
|
67
|
+
<BrowserScreenshot url="http://localhost:9100/?path=routes.oas.json">
|
|
68
|
+
|
|
69
|
+

|
|
70
|
+
|
|
71
|
+
</BrowserScreenshot>
|
|
72
|
+
|
|
73
|
+
Search for the API key authentication policy, click on it, and then click
|
|
74
|
+
**Create Policy** to accept the default policy JSON.
|
|
75
|
+
|
|
76
|
+
<ModalScreenshot>
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
</ModalScreenshot>
|
|
81
|
+
|
|
82
|
+
:::tip
|
|
83
|
+
|
|
84
|
+
The API key authentication policy should usually be one of the first
|
|
85
|
+
policies executed. If you came here from
|
|
86
|
+
[Step 2](./step-2-add-rate-limiting.mdx) then you will want to drag it above
|
|
87
|
+
the rate limiting policy.
|
|
88
|
+
|
|
89
|
+
:::
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
If you test your route, you should get a 401 Unauthorized response
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"status": 401,
|
|
98
|
+
"title": "Unauthorized",
|
|
99
|
+
"type": "https://httpproblems.com/http-status/401"
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
1. Set up an API Key
|
|
104
|
+
|
|
105
|
+
In order to call your API, you need to configure an API consumer. Go to the
|
|
106
|
+
[Zuplo Portal](https://portal.zuplo.com), then open the project you are
|
|
107
|
+
working on, **Services**, then click **Configure** on the "API Key Service".
|
|
108
|
+
|
|
109
|
+
:::warning
|
|
110
|
+
|
|
111
|
+
Be sure to select the appropriate environment in the dropdown on the top
|
|
112
|
+
right of the services page. You must select the environment type you linked
|
|
113
|
+
your local project to. If you only have a single environment, you should
|
|
114
|
+
select "Production". Later we will create new environments for preview.
|
|
115
|
+
|
|
116
|
+
:::
|
|
117
|
+
|
|
118
|
+

|
|
119
|
+
|
|
120
|
+
Then click **Create Consumer**.
|
|
121
|
+
|
|
122
|
+

|
|
123
|
+
|
|
124
|
+
Let's break down the configuration needed.
|
|
125
|
+
- Subject: Also known as `sub`. This is a unique identifier of the API
|
|
126
|
+
consumer. This is commonly the name of the user or organization consuming
|
|
127
|
+
your API
|
|
128
|
+
- Key managers: The email addresses of those who will be managing this API
|
|
129
|
+
key.
|
|
130
|
+
- Metadata: JSON metadata that will be made available to the runtime when a
|
|
131
|
+
key is used to authenticate. Common properties include the consumer's
|
|
132
|
+
subscription plan, organization, etc.
|
|
133
|
+
|
|
134
|
+
Go ahead and fill in `test-consumer` for the Subject. Add your own email as
|
|
135
|
+
a Key manager, and leave the metadata empty for now. Click **Save consumer**
|
|
136
|
+
once you're done.
|
|
137
|
+
|
|
138
|
+
<ModalScreenshot>
|
|
139
|
+
|
|
140
|
+

|
|
141
|
+
|
|
142
|
+
</ModalScreenshot>
|
|
143
|
+
|
|
144
|
+
1. Copy your API Key
|
|
145
|
+
|
|
146
|
+
After your API Key consumer is created, copy your new API Key by clicking
|
|
147
|
+
the copy button (next to the eye icon).
|
|
148
|
+
|
|
149
|
+

|
|
150
|
+
|
|
151
|
+
1. Test out your API Key
|
|
152
|
+
|
|
153
|
+
Using any HTTP client (like Postman or curl), make a request to your API.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
curl --request GET \
|
|
157
|
+
--url http://localhost:9000/path-1 \
|
|
158
|
+
--header 'Authorization: Bearer zpka_d67b7e241bb948758f415b79aa8exxxx_2efbxxxx'
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
You should get a 401 Unauthorized response - as we haven't supplied the API
|
|
162
|
+
key yet. Add a new `authorization` header with the value
|
|
163
|
+
`Bearer <YOUR_API_KEY>` and insert the API Key you got from the developer
|
|
164
|
+
portal.
|
|
165
|
+
|
|
166
|
+
You should now get a 200 OK.
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"url": "https://echo.zuplo.io/path-1",
|
|
171
|
+
"method": "GET",
|
|
172
|
+
"query": {},
|
|
173
|
+
"headers": {
|
|
174
|
+
"accept": "*/*",
|
|
175
|
+
"accept-encoding": "gzip, br",
|
|
176
|
+
"connection": "Keep-Alive",
|
|
177
|
+
"host": "echo.zuplo.io",
|
|
178
|
+
"true-client-ip": "12.63.237.42",
|
|
179
|
+
"user-agent": "curl/8.7.1",
|
|
180
|
+
"x-forwarded-proto": "https",
|
|
181
|
+
"x-real-ip": "12.63.237.42",
|
|
182
|
+
"zp-rid": "ecfac0de-f039-4ced-997c-b17c9babc944"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
:::note
|
|
188
|
+
|
|
189
|
+
We also offer an API for our API key service that allows you to
|
|
190
|
+
programmatically create consumers and even create your own developer portal
|
|
191
|
+
or integrate key management into your existing dashboard. See
|
|
192
|
+
[this document for details](./api-key-api.mdx).
|
|
193
|
+
|
|
194
|
+
:::
|
|
195
|
+
|
|
196
|
+
</Stepper>
|
|
197
|
+
|
|
198
|
+
**NEXT** Try
|
|
199
|
+
[Step 4 - Connect Source Control and Deploy to the Edge](./step-4-deploying-to-the-edge.mdx).
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 3 - API Key Authentication
|
|
3
|
+
sidebar_label: "3 - API Key Auth"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<QuickstartPicker
|
|
7
|
+
mode="portal"
|
|
8
|
+
alternateLink="/articles/step-3-add-api-key-auth-local"
|
|
9
|
+
/>
|
|
10
|
+
|
|
11
|
+
In this guide we'll add API Key authentication to a route. You can do this for
|
|
12
|
+
any Zuplo project but will need a route, consider completing
|
|
13
|
+
[Step 1](./step-1-setup-basic-gateway.mdx) first.
|
|
14
|
+
|
|
15
|
+
API Key authentication is one of our most popular **policies** as implementing
|
|
16
|
+
this authentication method is considered one of the easiest to use by developers
|
|
17
|
+
but hard for API developers to get right. We also support JWT tokens and most
|
|
18
|
+
other authentication methods.
|
|
19
|
+
|
|
20
|
+
:::info{title="What's a Policy?"}
|
|
21
|
+
|
|
22
|
+
[Policies](./policies.mdx) are modules that can intercept and transform an
|
|
23
|
+
incoming request or outgoing response. Zuplo offers a wide range of policies
|
|
24
|
+
built-in (including API key authentication) to save you time. You can check out
|
|
25
|
+
[the full list](./policies.mdx).
|
|
26
|
+
|
|
27
|
+
:::
|
|
28
|
+
|
|
29
|
+
Let's get started.
|
|
30
|
+
|
|
31
|
+
<Stepper>
|
|
32
|
+
|
|
33
|
+
1. Add the API Key Authentication Policy
|
|
34
|
+
|
|
35
|
+
Navigate to your route in the **Route Designer** (**Code** >
|
|
36
|
+
`routes.oas.json`) and open the **Policies** section. Then click **Add
|
|
37
|
+
Policy**.
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
Search for the API key authentication policy, click on it, and then click OK
|
|
42
|
+
to accept the default policy JSON.
|
|
43
|
+
|
|
44
|
+
<ModalScreenshot>
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
</ModalScreenshot>
|
|
49
|
+
|
|
50
|
+
:::tip
|
|
51
|
+
|
|
52
|
+
The API key authentication policy should usually be one of the first policies
|
|
53
|
+
executed. If you came here from [Step 2](./step-2-add-rate-limiting.mdx) then
|
|
54
|
+
you will want to drag it above the rate limiting policy.
|
|
55
|
+
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+

|
|
59
|
+
|
|
60
|
+
If you test your route, you should get a 401 Unauthorized response
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"status": 401,
|
|
65
|
+
"title": "Unauthorized",
|
|
66
|
+
"type": "https://httpproblems.com/http-status/401"
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
2. Set up an API Key
|
|
71
|
+
|
|
72
|
+
In order to call your API, you need to configure an API consumer. Go to
|
|
73
|
+
**Services**, then click **Configure** on the "API Key Service".
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
Then click **Create Consumer**.
|
|
78
|
+
|
|
79
|
+

|
|
80
|
+
|
|
81
|
+
Let's break down the configuration needed.
|
|
82
|
+
- Subject: Also known as `sub`. This is a unique identifier of the API
|
|
83
|
+
consumer. This is commonly the name of the user or organization consuming
|
|
84
|
+
your API
|
|
85
|
+
- Key managers: The email addresses of those who will be managing this API
|
|
86
|
+
key.
|
|
87
|
+
- Metadata: JSON metadata that will be made available to the runtime when a
|
|
88
|
+
key is used to authenticate. Common properties include the consumer's
|
|
89
|
+
subscription plan, organization, etc.
|
|
90
|
+
|
|
91
|
+
Go ahead and fill in `test-consumer` for the Subject. Add your own email as a
|
|
92
|
+
Key manager, and leave the metadata empty for now. Click **Save consumer**
|
|
93
|
+
once you're done.
|
|
94
|
+
|
|
95
|
+
<ModalScreenshot>
|
|
96
|
+
|
|
97
|
+

|
|
98
|
+
|
|
99
|
+
</ModalScreenshot>
|
|
100
|
+
|
|
101
|
+
3. Copy your API Key
|
|
102
|
+
|
|
103
|
+
After your API Key consumer is created, copy your new API Key by clicking the
|
|
104
|
+
copy button (next to the eye icon).
|
|
105
|
+
|
|
106
|
+

|
|
107
|
+
|
|
108
|
+
4. Test out your API Key
|
|
109
|
+
|
|
110
|
+
Navigate back to the **Route Designer**, and select your route. Next to the
|
|
111
|
+
path of your route, click the **Test** button and fire off a request.
|
|
112
|
+
|
|
113
|
+
<ModalScreenshot>
|
|
114
|
+
|
|
115
|
+

|
|
116
|
+
|
|
117
|
+
</ModalScreenshot>
|
|
118
|
+
|
|
119
|
+
You should get a 401 Unauthorized response - as we haven't supplied the API
|
|
120
|
+
key yet. Add a new `authorization` header with the value
|
|
121
|
+
`Bearer <YOUR_API_KEY>` and insert the API Key you got from the developer
|
|
122
|
+
portal.
|
|
123
|
+
|
|
124
|
+
You should now get a 200 OK.
|
|
125
|
+
|
|
126
|
+
<ModalScreenshot>
|
|
127
|
+
|
|
128
|
+

|
|
129
|
+
|
|
130
|
+
</ModalScreenshot>
|
|
131
|
+
|
|
132
|
+
:::note
|
|
133
|
+
|
|
134
|
+
We also offer an API for our API key service that allows you to
|
|
135
|
+
programmatically create consumers and even create your own developer portal
|
|
136
|
+
or integrate key management into your existing dashboard. See
|
|
137
|
+
[this document for details](./api-key-api.mdx).
|
|
138
|
+
|
|
139
|
+
:::
|
|
140
|
+
|
|
141
|
+
5. View your API Documentation
|
|
142
|
+
|
|
143
|
+
Whenever you deploy a new endpoint on Zuplo, it will automatically be added
|
|
144
|
+
to your
|
|
145
|
+
[autogenerated developer documentation portal](../dev-portal/introduction.mdx).
|
|
146
|
+
|
|
147
|
+
To access your API's developer portal, click the **Gateway deployed** button
|
|
148
|
+
in your toolbar and click the link under Developer Portal.
|
|
149
|
+

|
|
150
|
+
|
|
151
|
+
When you use certain policies like API keys, Zuplo will document properties
|
|
152
|
+
like headers associated with that policy. As you can see on the right, the
|
|
153
|
+
API key policy's `Authorization` header has been documented for you.
|
|
154
|
+
|
|
155
|
+

|
|
156
|
+
|
|
157
|
+
Additionally, a new Authentication section has been added to your developer
|
|
158
|
+
portal. Users of your API can sign in, view & manage their API keys, test
|
|
159
|
+
your endpoints, track API usage, and much more! You can learn more about that
|
|
160
|
+
in
|
|
161
|
+
[our developer portal auth docs](/docs/dev-portal/zudoku/configuration/authentication).
|
|
162
|
+
|
|
163
|
+
</Stepper>
|
|
164
|
+
|
|
165
|
+
**NEXT** Try
|
|
166
|
+
[Step 4 - Connect Source Control and Deploy to the Edge](./step-4-deploying-to-the-edge.mdx).
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Step 4 - Deploying to the Edge
|
|
3
|
+
sidebar_label: "4 - Deploy"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
In this guide we'll show you how to deploy your gateway to the edge, at over 300
|
|
7
|
+
data-centers around the world. The act of deployment creates new
|
|
8
|
+
[environments](./environments.mdx) and it's worth familiarizing yourself with
|
|
9
|
+
[how environments work](./environments.mdx).
|
|
10
|
+
|
|
11
|
+
In this tutorial we'll show the default workflow via GitHub, but note that we
|
|
12
|
+
also support GitLab, BitBucket
|
|
13
|
+
([enterprise plan only](https://zuplo.com/pricing)) and
|
|
14
|
+
[custom CI/CD](./custom-ci-cd.mdx).
|
|
15
|
+
|
|
16
|
+
To follow this tutorial you'll need
|
|
17
|
+
|
|
18
|
+
- a GitHub account (it's free, sign up at [github.com](https://github.com)).
|
|
19
|
+
- a zuplo project - complete [Step 1](./step-1-setup-basic-gateway.mdx),
|
|
20
|
+
[Step 2](./step-2-add-rate-limiting.mdx) and
|
|
21
|
+
[Step 3](./step-3-add-api-key-auth.mdx) for a great start!
|
|
22
|
+
- to install the
|
|
23
|
+
[Zuplo GitHub deployment](https://github.com/apps/zuplo/installations/new) to
|
|
24
|
+
GitHub - you can
|
|
25
|
+
[follow these instructions](https://github.com/apps/zuplo/installations/new)
|
|
26
|
+
|
|
27
|
+
Let's get started:
|
|
28
|
+
|
|
29
|
+
<Stepper>
|
|
30
|
+
|
|
31
|
+
1. Authorize to GitHub
|
|
32
|
+
|
|
33
|
+
Next, go to your project in the Zuplo portal, click **Settings**, then select
|
|
34
|
+
**Source Control**. If your project isn't already connected to GitHub click
|
|
35
|
+
the **Connect to GitHub** button and follow the auth flow. You'll need to
|
|
36
|
+
grant permissions for any GitHub organizations you want to work with.
|
|
37
|
+
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
Next, a dialog will open asking you to authorize Zuplo. Click the **Authorize
|
|
41
|
+
Zuplo** button.
|
|
42
|
+
|
|
43
|
+
<Framed size="sm">
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
</Framed>
|
|
48
|
+
|
|
49
|
+
<Callout type="tip" title="GitHub Permissions" >
|
|
50
|
+
|
|
51
|
+
The permission "Act on your behalf" sounds a bit scary - however, this is a
|
|
52
|
+
standard GitHub permission and by default Zuplo can't actually do anything
|
|
53
|
+
with this. In order to perform actions on your behalf you must grant Zuplo
|
|
54
|
+
access to a specific repository (shown in the next steps.).
|
|
55
|
+
|
|
56
|
+
[read more about this permission on GitHub's docs](https://docs.github.com/en/apps/using-github-apps/authorizing-github-apps#about-github-apps-acting-on-your-behalf).
|
|
57
|
+
|
|
58
|
+
</Callout>
|
|
59
|
+
|
|
60
|
+
After you have connected the GitHub app, it needs to be granted permission to
|
|
61
|
+
edit a repository. If this is your first time connecting Zuplo, you will be
|
|
62
|
+
immediately asked to select a GitHub Org to install Zuplo. Select the org you
|
|
63
|
+
want to use.
|
|
64
|
+
|
|
65
|
+
<Framed size="sm">
|
|
66
|
+
|
|
67
|
+

|
|
68
|
+
|
|
69
|
+
</Framed>
|
|
70
|
+
|
|
71
|
+
Next, you will be asked to select the repositories that you want Zuplo to
|
|
72
|
+
access. The easiest thing is to just select **All Repositories**, but if you
|
|
73
|
+
want fine-grain control, you can select a specific repository.
|
|
74
|
+
|
|
75
|
+
<Framed size="sm">
|
|
76
|
+
|
|
77
|
+

|
|
78
|
+
|
|
79
|
+
</Framed>
|
|
80
|
+
|
|
81
|
+
<Callout type="caution" title="Existing Installation" >
|
|
82
|
+
|
|
83
|
+
The next step is only if you already have Zuplo installed in a GitHub org and
|
|
84
|
+
need to add another organization.
|
|
85
|
+
|
|
86
|
+
</Callout>
|
|
87
|
+
|
|
88
|
+
If you weren't prompted to select a GitHub org, it's likely that you are
|
|
89
|
+
already a member of an account that has authorized Zuplo. To add Zuplo to a
|
|
90
|
+
new organization click **Add GitHub Account** in the org picker list.
|
|
91
|
+
|
|
92
|
+

|
|
93
|
+
|
|
94
|
+
1. Connect GitHub to your Project
|
|
95
|
+
|
|
96
|
+
With your GitHub App configured, you can now return to the Zuplo portal. In
|
|
97
|
+
the **Source Control** settings you should now see a list of GitHub
|
|
98
|
+
repositories. Create a new repository by clicking the **Create new
|
|
99
|
+
repository** button. You will be prompted that this will open GitHub. Click
|
|
100
|
+
to continue.
|
|
101
|
+
|
|
102
|
+

|
|
103
|
+
|
|
104
|
+
In the GitHub UI, you can rename your repository if you want. Click the
|
|
105
|
+
**Create repository** button at the bottom of the page and return to the
|
|
106
|
+
Zuplo Portal.
|
|
107
|
+
|
|
108
|
+
The portal will reload and you will see your new repository listed. Click
|
|
109
|
+
**Connect** to connect Zuplo to that repository.
|
|
110
|
+
|
|
111
|
+

|
|
112
|
+
|
|
113
|
+
After the connection succeeds you will see a link to your GitHub repository.
|
|
114
|
+
|
|
115
|
+

|
|
116
|
+
|
|
117
|
+
Click the link to return to GitHub. You should see a little brown dot next to
|
|
118
|
+
the commit hash (1). When you hover your mouse over that you'll see the Zuplo
|
|
119
|
+
deployment was successful. Click **Details** (2) to open the deployment info.
|
|
120
|
+
|
|
121
|
+
This shows that your deployment is in progress, it will take about 50
|
|
122
|
+
seconds.
|
|
123
|
+
|
|
124
|
+

|
|
125
|
+
|
|
126
|
+
On the deployment page, you will see **Deployment has Completed!!** and below
|
|
127
|
+
that's the link to your new environment.
|
|
128
|
+
|
|
129
|
+

|
|
130
|
+
|
|
131
|
+
1. Deploy another Environment
|
|
132
|
+
|
|
133
|
+
Zuplo makes it easy for teams to collaborate by allowing teams to create many
|
|
134
|
+
preview environments. To create a new environment, simply go to your
|
|
135
|
+
repository in GitHub and create a new branch.
|
|
136
|
+
|
|
137
|
+
Let's create a branch called `development`
|
|
138
|
+
|
|
139
|
+

|
|
140
|
+
|
|
141
|
+
Wait about 20s and head back to Zuplo - you should see a new entry in the
|
|
142
|
+
environment dropdown called `development`.
|
|
143
|
+
|
|
144
|
+
1. Push a Change to 'development'
|
|
145
|
+
|
|
146
|
+
Let's make a simple change to our `working-copy` environment. Let's do
|
|
147
|
+
something simple like capitalize the **Summary** field from 'Get all todos'
|
|
148
|
+
to 'Get All Todos'. It doesn't really matter what the change is.
|
|
149
|
+
|
|
150
|
+

|
|
151
|
+
|
|
152
|
+
Save your changes. Click the GitHub button at bottom left and choose **Commit
|
|
153
|
+
& Push**.
|
|
154
|
+
|
|
155
|
+

|
|
156
|
+
|
|
157
|
+
Enter a description of your change in the dialog that pops up:
|
|
158
|
+
|
|
159
|
+
<ModalScreenshot>
|
|
160
|
+
|
|
161
|
+

|
|
162
|
+
|
|
163
|
+
</ModalScreenshot>
|
|
164
|
+
|
|
165
|
+
Click **Commit & Push** will create a new temporary branch in GitHub with a
|
|
166
|
+
name `zup-...`. On the next dialog, click **Create Pull Request**.
|
|
167
|
+
|
|
168
|
+
<ModalScreenshot>
|
|
169
|
+
|
|
170
|
+

|
|
171
|
+
|
|
172
|
+
</ModalScreenshot>
|
|
173
|
+
|
|
174
|
+
This will navigate you to the screen in GitHub that allows you to create a
|
|
175
|
+
Pull Request. Change the **base** branch to `development` (since that's the
|
|
176
|
+
environment we want to update first). Click **Create pull request**.
|
|
177
|
+
|
|
178
|
+

|
|
179
|
+
|
|
180
|
+
When ready, click **Merge pull request**.
|
|
181
|
+
|
|
182
|
+

|
|
183
|
+
|
|
184
|
+
Once merged, you'll want to delete that temporary branch.
|
|
185
|
+
|
|
186
|
+

|
|
187
|
+
|
|
188
|
+
The successful merge will trigger a rebuild and deployment of `development`
|
|
189
|
+
with your change. You can check this by choosing the environment
|
|
190
|
+
`development` in Zuplo and navigating to the **read only** Route Designer.
|
|
191
|
+
|
|
192
|
+

|
|
193
|
+
|
|
194
|
+
This shows how you can use widely recognized GitOps practices to manage how
|
|
195
|
+
code flows through your environments using Pull Requests and protected
|
|
196
|
+
branches.
|
|
197
|
+
|
|
198
|
+
</Stepper>
|
|
199
|
+
|
|
200
|
+
## Troubleshooting
|
|
201
|
+
|
|
202
|
+
I don't see my repository listed in Zuplo project settings.
|
|
203
|
+
|
|
204
|
+
- Make sure you've granted access to the project with the Zuplo GitHub App, you
|
|
205
|
+
can
|
|
206
|
+
[check that configuration here](https://github.com/apps/zuplo/installations/new)
|
|
207
|
+
|
|
208
|
+
I've connected my Zuplo project to a GitHub repository but get access errors
|
|
209
|
+
when running commits, pulls or try to open a pull request.
|
|
210
|
+
|
|
211
|
+
- If you are the owner of the project, make sure you've granted access to the
|
|
212
|
+
project with the Zuplo GitHub App, you can
|
|
213
|
+
[check that configuration here](https://github.com/apps/zuplo/installations/new)
|
|
214
|
+
- If this Zuplo project was shared with you, make sure you are a GitHub
|
|
215
|
+
collaborator. This can be verified by going to the GitHub repository >
|
|
216
|
+
Settings > Collaborators section. You'll need admin permissions to the
|
|
217
|
+
repository.
|
|
218
|
+
- If the GitHub repository has been renamed or moved to a different
|
|
219
|
+
organization, try disconnecting and reconnecting to it. You can do this by
|
|
220
|
+
going to your Zuplo project's settings > Source Control section
|