zuplo 7.3.2 → 7.4.3
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/docs/ai-gateway/apps.mdx +2 -2
- package/docs/ai-gateway/custom-policies.mdx +3 -3
- package/docs/ai-gateway/fallback.mdx +13 -12
- package/docs/ai-gateway/getting-started.mdx +10 -9
- package/docs/ai-gateway/introduction.mdx +19 -18
- package/docs/ai-gateway/managing-apps.mdx +9 -7
- package/docs/ai-gateway/policy-chains.mdx +13 -7
- package/docs/ai-gateway/policy-templates.mdx +4 -3
- package/docs/ai-gateway/usage-limits.mdx +8 -10
- package/docs/api-management/introduction.md +1 -1
- package/docs/articles/api-key-api.mdx +3 -3
- package/docs/articles/custom-ci-cd-azure.mdx +1 -1
- package/docs/articles/custom-ci-cd-bitbucket.mdx +2 -2
- package/docs/articles/custom-code-patterns.md +1 -1
- package/docs/articles/custom-domains.mdx +2 -2
- package/docs/articles/development-options.mdx +4 -4
- package/docs/articles/fastly-zuplo-host-setup.mdx +5 -5
- package/docs/articles/feature-flags.mdx +442 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +7 -7
- package/docs/articles/health-checks.mdx +4 -4
- package/docs/articles/hosting-options.mdx +2 -2
- package/docs/articles/local-development-env-variables.mdx +1 -1
- package/docs/articles/metrics-plugins.mdx +1 -1
- package/docs/articles/migration-overview.md +1 -1
- package/docs/articles/monorepo-deployment.mdx +10 -10
- package/docs/articles/performance-testing.mdx +10 -9
- package/docs/articles/plugin-azure-blob.mdx +1 -1
- package/docs/articles/plugin-azure-event-hubs.mdx +2 -2
- package/docs/articles/policies.mdx +2 -2
- package/docs/articles/securing-backend-mtls.mdx +3 -3
- package/docs/articles/securing-the-gateway-with-client-mtls.mdx +3 -3
- package/docs/articles/securing-your-backend.mdx +1 -1
- package/docs/articles/security.mdx +1 -1
- package/docs/articles/terraform.mdx +2 -2
- package/docs/articles/testing.mdx +6 -6
- package/docs/articles/troubleshooting-slow-responses.mdx +5 -6
- package/docs/articles/troubleshooting.md +1 -1
- package/docs/articles/use-openapi-extension-data.mdx +4 -4
- package/docs/articles/waf-ddos-akamai.md +13 -13
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +14 -14
- package/docs/articles/waf-ddos-fastly.mdx +14 -14
- package/docs/articles/waf-ddos.mdx +7 -7
- package/docs/cli/authentication.mdx +1 -1
- package/docs/cli/lint.mdx +103 -0
- package/docs/concepts/how-zuplo-works.mdx +5 -4
- package/docs/concepts/upstream-credentials.mdx +1 -1
- package/docs/dedicated/akamai/architecture.mdx +23 -24
- package/docs/dedicated/akamai/cdn.mdx +20 -20
- package/docs/dedicated/architecture.mdx +28 -27
- package/docs/dedicated/custom-domains.mdx +3 -4
- package/docs/dedicated/federated-gateways.mdx +1 -1
- package/docs/dedicated/networking.mdx +10 -10
- package/docs/dedicated/overview.mdx +3 -3
- package/docs/dedicated/source-control.mdx +6 -5
- package/docs/handlers/custom-handler.mdx +4 -4
- package/docs/handlers/mcp-server.mdx +1 -1
- package/docs/handlers/url-forward.mdx +1 -2
- package/docs/mcp-server/introduction.mdx +4 -4
- package/docs/policies/_index.md +2 -2
- package/docs/policies/ai-gateway-configuration-executor-v2-inbound/schema.json +1 -1
- package/docs/policies/ai-gateway-dlp-inbound/doc.md +79 -45
- package/docs/policies/ai-gateway-dlp-inbound/schema.json +5679 -3359
- package/docs/policies/ai-gateway-metering-v2-inbound/doc.md +13 -13
- package/docs/policies/ai-gateway-metering-v2-inbound/schema.json +1 -1
- package/docs/programmable-api/environment.mdx +1 -1
- package/docs/programmable-api/jwt-service-plugin.mdx +1 -1
- package/docs/programmable-api/logger.mdx +1 -1
- package/docs/programmable-api/runtime-errors.mdx +1 -1
- package/docs/programmable-api/zuplo-context.mdx +3 -3
- package/docs/self-hosted/overview.md +3 -3
- package/package.json +5 -5
package/docs/ai-gateway/apps.mdx
CHANGED
|
@@ -27,8 +27,8 @@ Each app has three things of its own:
|
|
|
27
27
|
- **An API key**—authenticates the app's requests when the gateway runs the
|
|
28
28
|
[authentication policy](./policy-chains.mdx#authentication).
|
|
29
29
|
- **A [policy chain](./policy-chains.mdx)**—the ordered policies that run on the
|
|
30
|
-
app's requests: model access, budgets, caching, guardrails, and
|
|
31
|
-
policies. The chain starts out empty unless the app's team has a
|
|
30
|
+
app's requests: model access, app-specific budgets, caching, guardrails, and
|
|
31
|
+
custom policies. The chain starts out empty unless the app's team has a
|
|
32
32
|
[policy template](./policy-templates.mdx).
|
|
33
33
|
|
|
34
34
|
## API Keys
|
|
@@ -7,9 +7,9 @@ description:
|
|
|
7
7
|
push, and add it to an app's policy chain in the portal.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
The AI Gateway's built-in policies cover model access, budgets,
|
|
11
|
-
guardrails, and tracing—but your gateway can run any policy you can
|
|
12
|
-
TypeScript. A custom policy lives in your gateway's
|
|
10
|
+
The AI Gateway's built-in policies cover model access, app-specific budgets,
|
|
11
|
+
caching, guardrails, and tracing—but your gateway can run any policy you can
|
|
12
|
+
write in TypeScript. A custom policy lives in your gateway's
|
|
13
13
|
[repository](./source-control.mdx), is declared in `config/policies.json`, and
|
|
14
14
|
from then on appears in the portal's **Add Policy** dialog like any built-in
|
|
15
15
|
policy. Apps add it to their [policy chains](./policy-chains.mdx), and it runs
|
|
@@ -7,8 +7,8 @@ description:
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
Fallbacks let an app keep serving requests when its primary model fails, times
|
|
10
|
-
out, or
|
|
11
|
-
They're configured with the **Fallback Model** policy in the app's
|
|
10
|
+
out, or an applicable usage limit is exceeded, instead of returning an error to
|
|
11
|
+
the caller. They're configured with the **Fallback Model** policy in the app's
|
|
12
12
|
[policy chain](./policy-chains.mdx).
|
|
13
13
|
|
|
14
14
|
The AI Gateway offers two independent fallback mechanisms, each triggered by a
|
|
@@ -17,7 +17,7 @@ different condition:
|
|
|
17
17
|
| Mechanism | Triggers when… | Without a fallback set… |
|
|
18
18
|
| ---------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------- |
|
|
19
19
|
| **Fallback & Timeout** | The primary fails with a retryable error (`5xx`, `408`, `425`, `429`), a network failure, or a timeout | The gateway returns the error to the caller |
|
|
20
|
-
| **Quota Fallback** |
|
|
20
|
+
| **Quota Fallback** | An app, team, or gateway usage limit is exceeded | The request is blocked with a `429` |
|
|
21
21
|
|
|
22
22
|
Both are configured entirely in the Zuplo Portal, and either can route to _any_
|
|
23
23
|
provider—the fallback doesn't have to share the primary's provider. Fallback
|
|
@@ -57,21 +57,22 @@ is configured, the primary model call runs unbounded.
|
|
|
57
57
|
## Quota fallback
|
|
58
58
|
|
|
59
59
|
The quota fallback routes requests to an alternate, usually cheaper, model when
|
|
60
|
-
|
|
61
|
-
blocking the request with a `429`. This keeps an app available after
|
|
62
|
-
|
|
63
|
-
lower-cost model.
|
|
60
|
+
an app, team, or gateway [usage limit](./usage-limits.mdx) is exceeded, rather
|
|
61
|
+
than blocking the request with a `429`. This keeps an app available after an
|
|
62
|
+
applicable budget, token, or request threshold is crossed, while shifting the
|
|
63
|
+
overflow traffic to a lower-cost model.
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
The **Fallback Model** policy supplies the quota fallback selection. Team and
|
|
66
|
+
gateway limits can activate it whether or not the chain includes **Budgets and
|
|
67
|
+
Costs**. Add Budgets and Costs when the app also needs its own limits, and place
|
|
68
|
+
it after Fallback Model. If you leave the quota fallback empty, the gateway
|
|
69
|
+
blocks requests with a `429` once an applicable limit is exceeded.
|
|
69
70
|
|
|
70
71
|
:::tip
|
|
71
72
|
|
|
72
73
|
Point the quota fallback at a smaller, cheaper model so overflow traffic stays
|
|
73
74
|
inexpensive while remaining available. The fallback's own usage still counts
|
|
74
|
-
toward
|
|
75
|
+
toward every applicable limit.
|
|
75
76
|
|
|
76
77
|
:::
|
|
77
78
|
|
|
@@ -107,7 +107,8 @@ account, Zuplo project, and AI Gateway team roles control access.
|
|
|
107
107
|
on later teams, letting you nest them. To set gateway-wide spending limits
|
|
108
108
|
across this Zuplo project, open the gateway's **Settings → Usage Limits**;
|
|
109
109
|
for team-specific limits, use the team's **Usage & Limits** tab. See
|
|
110
|
-
[Usage Limits](./usage-limits.mdx).
|
|
110
|
+
[Usage Limits](./usage-limits.mdx). Gateway and team limits apply to every
|
|
111
|
+
app regardless of its policy chain.
|
|
111
112
|
|
|
112
113
|
5. **Create an app**
|
|
113
114
|
|
|
@@ -117,8 +118,8 @@ account, Zuplo project, and AI Gateway team roles control access.
|
|
|
117
118
|
In the **Apps & Teams** tab, select the team you just created and click
|
|
118
119
|
**Create App** in the team's header. Give the app a descriptive name (for
|
|
119
120
|
example, "Tennis Chat") and confirm the team that owns it. That's the whole
|
|
120
|
-
dialog—models, budgets, and other behavior are configured on the
|
|
121
|
-
chain in the next step.
|
|
121
|
+
dialog—models, app-specific budgets, and other behavior are configured on the
|
|
122
|
+
app's policy chain in the next step.
|
|
122
123
|
|
|
123
124
|
:::tip
|
|
124
125
|
|
|
@@ -148,9 +149,9 @@ account, Zuplo project, and AI Gateway team roles control access.
|
|
|
148
149
|
|
|
149
150
|
:::
|
|
150
151
|
|
|
151
|
-
This is also where you add budgets, semantic caching,
|
|
152
|
-
custom policies. Changes to the chain apply within about
|
|
153
|
-
needed. See [Policy Chains](./policy-chains.mdx).
|
|
152
|
+
This is also where you add app-specific budgets, semantic caching,
|
|
153
|
+
guardrails, and any custom policies. Changes to the chain apply within about
|
|
154
|
+
a minute—no redeploy needed. See [Policy Chains](./policy-chains.mdx).
|
|
154
155
|
|
|
155
156
|
7. **Get the app's URL and API key**
|
|
156
157
|
|
|
@@ -300,8 +301,8 @@ metrics.
|
|
|
300
301
|
|
|
301
302
|
## Next steps
|
|
302
303
|
|
|
303
|
-
- [Policy Chains](./policy-chains.mdx): add budgets, semantic
|
|
304
|
-
guardrails to your app's chain
|
|
304
|
+
- [Policy Chains](./policy-chains.mdx): add app-specific budgets, semantic
|
|
305
|
+
caching, and guardrails to your app's chain
|
|
305
306
|
- [Custom Policies](./custom-policies.mdx): write your own policy and add it to
|
|
306
307
|
an app's chain
|
|
307
308
|
- [Policy Templates](./policy-templates.mdx): give every new app in a team a
|
|
@@ -317,4 +318,4 @@ metrics.
|
|
|
317
318
|
| 404 "Unsupported AI Gateway endpoint" | The path must end with a supported `/v1/...` operation—usually the URL is missing its `/v1` segment. Use the app's API URL plus `/v1/chat/completions`, for example |
|
|
318
319
|
| 400 error asking for `providerName/model` | Prefix the model with the provider name configured in the portal—`openai/gpt-5-mini`, not `gpt-5-mini` |
|
|
319
320
|
| 403 error listing the allowed models | The app's Model Filtering policy doesn't include the requested model; add it on the app's Policies tab or use a listed one |
|
|
320
|
-
| Budget limit reached immediately | Check the
|
|
321
|
+
| Budget limit reached immediately | Check the gateway and team limits, which always apply, plus the app's Budgets and Costs policy; any level's limit can block the request |
|
|
@@ -16,11 +16,12 @@ responses while applying policies, controls, and monitoring.
|
|
|
16
16
|
Each piece of software that calls the gateway registers as an **app**—your
|
|
17
17
|
support chatbot is one app; an internal coding agent is another. A single AI
|
|
18
18
|
Gateway holds as many apps as you need, and you control exactly which policies
|
|
19
|
-
run for each one. Every app has its own ordered policy chain, so
|
|
20
|
-
customer-facing chatbot
|
|
21
|
-
|
|
22
|
-
TypeScript, and apps add them to their chains like any
|
|
23
|
-
changes apply within about a minute, with no redeploy. See
|
|
19
|
+
run for each one. Every app has its own ordered policy chain, so you can give
|
|
20
|
+
the customer-facing chatbot an app-specific budget and guardrails while leaving
|
|
21
|
+
those controls out of the internal agent's chain. Beyond the built-in policies,
|
|
22
|
+
you can write your own in TypeScript, and apps add them to their chains like any
|
|
23
|
+
other policy. Chain changes apply within about a minute, with no redeploy. See
|
|
24
|
+
[Apps](./apps.mdx).
|
|
24
25
|
|
|
25
26
|
## Key Benefits
|
|
26
27
|
|
|
@@ -59,15 +60,15 @@ provider. Each app has its own URL, API key, and policy chain, so one gateway
|
|
|
59
60
|
serves teams with completely different configurations.
|
|
60
61
|
|
|
61
62
|
Each request arrives at the URL of the app it belongs to. The gateway identifies
|
|
62
|
-
that app, runs its policy chain (model access, cost controls,
|
|
63
|
-
guardrails), routes to the selected LLM provider, and streams the
|
|
64
|
-
Throughout this process, the gateway captures metrics without
|
|
65
|
-
underlying provider credentials.
|
|
63
|
+
that app, runs its policy chain (model access, app-specific cost controls,
|
|
64
|
+
security guardrails), routes to the selected LLM provider, and streams the
|
|
65
|
+
response back. Throughout this process, the gateway captures metrics without
|
|
66
|
+
exposing underlying provider credentials.
|
|
66
67
|
|
|
67
|
-
Every control is opt-in. An app whose policy chain is empty
|
|
68
|
-
|
|
69
|
-
budgets, guardrails, or caching apply
|
|
70
|
-
|
|
68
|
+
Every app-specific control is opt-in. An app whose policy chain is empty runs no
|
|
69
|
+
app-selected controls: each request names its own model, and no app-specific
|
|
70
|
+
model restrictions, budgets, guardrails, or caching apply. Gateway and team
|
|
71
|
+
usage limits still apply.
|
|
71
72
|
|
|
72
73
|
## Core Features
|
|
73
74
|
|
|
@@ -90,9 +91,9 @@ runs, so gateway changes go through your normal review workflow. See
|
|
|
90
91
|
### Per-App Policy Chains
|
|
91
92
|
|
|
92
93
|
Each app runs its own ordered chain of policies—model filtering, fallback
|
|
93
|
-
models, budgets, semantic caching, guardrails, tracing, and any
|
|
94
|
-
declared in the repository. Team policy templates give new apps
|
|
95
|
-
starting pipeline. See [Policy Chains](./policy-chains.mdx) and
|
|
94
|
+
models, app-specific budgets, semantic caching, guardrails, tracing, and any
|
|
95
|
+
custom policies declared in the repository. Team policy templates give new apps
|
|
96
|
+
a consistent starting pipeline. See [Policy Chains](./policy-chains.mdx) and
|
|
96
97
|
[Custom Policies](./custom-policies.mdx).
|
|
97
98
|
|
|
98
99
|
### Team Hierarchy & Budgets
|
|
@@ -113,8 +114,8 @@ Each app gets its own:
|
|
|
113
114
|
|
|
114
115
|
- **Unique Gateway URL**: Single endpoint regardless of underlying provider
|
|
115
116
|
- **API Key**: Zuplo-managed key that never exposes provider credentials
|
|
116
|
-
- **Policy Chain**: Model access, budgets, caching, guardrails, and
|
|
117
|
-
policies, applied in the order the app chooses
|
|
117
|
+
- **Policy Chain**: Model access, app-specific budgets, caching, guardrails, and
|
|
118
|
+
custom policies, applied in the order the app chooses
|
|
118
119
|
|
|
119
120
|
### Zuplo accounts and projects
|
|
120
121
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
title: Managing Apps
|
|
3
3
|
description:
|
|
4
4
|
Create, edit, and delete AI Gateway apps. Apps are created with just a name
|
|
5
|
-
and a team; models, budgets, and other behavior live on the app's
|
|
6
|
-
chain.
|
|
5
|
+
and a team; models, app-specific budgets, and other behavior live on the app's
|
|
6
|
+
policy chain.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
An app represents one caller of your AI Gateway—a service, an agent, or a
|
|
@@ -47,7 +47,8 @@ permission to view the Zuplo project that contains the AI Gateway.
|
|
|
47
47
|
That's the whole dialog. The portal then takes you to the app's **Policies**
|
|
48
48
|
tab. If the app's team defines a [policy template](./policy-templates.mdx), the
|
|
49
49
|
new app starts with that chain; otherwise the chain is empty and the app is
|
|
50
|
-
|
|
50
|
+
subject to no app-specific controls until you add policies. Team and gateway
|
|
51
|
+
usage limits still apply.
|
|
51
52
|
|
|
52
53
|
## Restricting models
|
|
53
54
|
|
|
@@ -86,16 +87,17 @@ over—see [Dynamic model routing](./cookbooks/dynamic-model-routing.mdx).
|
|
|
86
87
|
|
|
87
88
|
App budgets live on the **Budgets and Costs** policy in the app's chain. Open
|
|
88
89
|
the app's **Policies** tab and configure it with daily or monthly limits for
|
|
89
|
-
spending, tokens, or requests.
|
|
90
|
-
|
|
90
|
+
spending, tokens, or requests. Team and gateway limits apply to every app
|
|
91
|
+
automatically, even when the app's chain doesn't include Budgets and Costs. See
|
|
92
|
+
[Usage Limits](./usage-limits.mdx).
|
|
91
93
|
|
|
92
94
|
## Editing an App
|
|
93
95
|
|
|
94
96
|
To edit an app, open the
|
|
95
97
|
[Apps & Teams](https://portal.zuplo.com/+/account/project/ai/apps) tab of your
|
|
96
98
|
AI Gateway project in the Zuplo Portal. Select the app you want to edit. The
|
|
97
|
-
app's behavior—models, budgets, caching, guardrails—is edited on
|
|
98
|
-
**Policies** tab; the app's name lives on the **Settings** tab. Make your
|
|
99
|
+
app's behavior—models, app-specific budgets, caching, guardrails—is edited on
|
|
100
|
+
the **Policies** tab; the app's name lives on the **Settings** tab. Make your
|
|
99
101
|
changes and click the **Save** button. Policy chain changes apply within about a
|
|
100
102
|
minute.
|
|
101
103
|
|
|
@@ -8,9 +8,9 @@ description:
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
Every request to an AI Gateway app runs down through the app's **policy chain**:
|
|
11
|
-
an ordered list of policies that control model access, budgets,
|
|
12
|
-
guardrails, and tracing for that app. Different apps on the same
|
|
13
|
-
completely different chains.
|
|
11
|
+
an ordered list of policies that control model access, app-specific budgets,
|
|
12
|
+
caching, guardrails, and tracing for that app. Different apps on the same
|
|
13
|
+
gateway can run completely different chains.
|
|
14
14
|
|
|
15
15
|
The chain works in two layers:
|
|
16
16
|
|
|
@@ -24,8 +24,9 @@ The chain works in two layers:
|
|
|
24
24
|
portal. Chain changes apply within about a minute, with no deploy.
|
|
25
25
|
|
|
26
26
|
No policy is required. An app whose chain is empty still serves requests: each
|
|
27
|
-
request names its own model, and no model restrictions, budgets,
|
|
28
|
-
caching apply.
|
|
27
|
+
request names its own model, and no app-specific model restrictions, budgets,
|
|
28
|
+
guardrails, or caching apply. Team and gateway usage limits apply regardless of
|
|
29
|
+
the app's policy chain.
|
|
29
30
|
|
|
30
31
|
A request passes through whatever the app selected before the AI Gateway handler
|
|
31
32
|
calls the provider:
|
|
@@ -105,14 +106,19 @@ Model Filtering → Fallback Model → Budgets and Costs → Semantic Cache
|
|
|
105
106
|
never creates one. A chain with Fallback Model but no Model Filtering does
|
|
106
107
|
nothing at all—the policy logs a warning and passes the request through
|
|
107
108
|
unchanged. That's also why a fallback can never bypass the filter.
|
|
108
|
-
- **Budgets and Costs** third: it
|
|
109
|
-
|
|
109
|
+
- **Budgets and Costs** third: it configures the app's own limits and needs the
|
|
110
|
+
resolved selection so an exceeded app limit can activate the quota fallback.
|
|
110
111
|
- **Semantic Cache** after Budgets and Costs: cache hits still count toward
|
|
111
112
|
request limits.
|
|
112
113
|
|
|
113
114
|
Tracing policies work well at the end of the chain, so traces reflect the
|
|
114
115
|
request the earlier policies produced.
|
|
115
116
|
|
|
117
|
+
Team and gateway limits are enforced outside the app's policy chain. When one is
|
|
118
|
+
exceeded, the app's quota fallback works whether or not its chain includes
|
|
119
|
+
Budgets and Costs, as long as Model Filtering and Fallback Model supply a
|
|
120
|
+
fallback selection.
|
|
121
|
+
|
|
116
122
|
## Built-in policies
|
|
117
123
|
|
|
118
124
|
See the [policies overview](./policies/overview.mdx) for every policy an app can
|
|
@@ -8,9 +8,10 @@ description:
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
A team's **policy template** is the policy chain that apps created in that team
|
|
11
|
-
start with. Use templates to
|
|
12
|
-
|
|
13
|
-
custom compliance policy—while controlling what individual apps
|
|
11
|
+
start with. Use templates to give every app in a team the same app-specific
|
|
12
|
+
controls—such as Model Filtering, Budgets and Costs with an app budget, a
|
|
13
|
+
guardrail, or a custom compliance policy—while controlling what individual apps
|
|
14
|
+
may change. Team and gateway limits don't depend on the template.
|
|
14
15
|
|
|
15
16
|
## How templates apply
|
|
16
17
|
|
|
@@ -83,22 +83,20 @@ requests to that model instead of blocking with a `429`—see
|
|
|
83
83
|
[Fallback Models](./fallback.mdx). The fallback's usage still counts toward the
|
|
84
84
|
limits.
|
|
85
85
|
|
|
86
|
-
:::
|
|
86
|
+
:::note{title="App, team, and gateway limits are configured separately"}
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
[policy template](./policy-templates.mdx) to make sure every app starts with it.
|
|
88
|
+
The Budgets and Costs policy configures and enforces an app's own limits. Team
|
|
89
|
+
and gateway limits apply to every app automatically, whether or not the app's
|
|
90
|
+
policy chain includes Budgets and Costs.
|
|
92
91
|
|
|
93
92
|
:::
|
|
94
93
|
|
|
95
94
|
:::caution{title="Budgets fail open by default"}
|
|
96
95
|
|
|
97
|
-
The Budgets and Costs policy's `throwOnFailure` option
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
outage rejects the request rather than letting it escape the budget.
|
|
96
|
+
The Budgets and Costs policy's `throwOnFailure` option controls how an error
|
|
97
|
+
while checking the app's own limits is handled. It defaults to `false`, so the
|
|
98
|
+
request continues through the gateway. Set it to `true` to reject the request
|
|
99
|
+
instead. Team and gateway limit checks run independently of this policy.
|
|
102
100
|
|
|
103
101
|
:::
|
|
104
102
|
|
|
@@ -3,7 +3,7 @@ title: Zuplo API Management
|
|
|
3
3
|
sidebar_label: Introduction
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
The Zuplo
|
|
6
|
+
The Zuplo Gateway is a fully-managed, lightweight API management platform
|
|
7
7
|
designed for developers. It offers fast deployment, GitOps-friendly workflows,
|
|
8
8
|
and unlimited environments. Whether you're an individual developer or part of an
|
|
9
9
|
engineering team, Zuplo makes it easy to:
|
|
@@ -45,8 +45,8 @@ Consumers can contain one or more API Keys.
|
|
|
45
45
|
|
|
46
46
|
Buckets are the top level group for this service. A bucket could be used with a
|
|
47
47
|
single Zuplo environment or shared among multiple environments or projects. By
|
|
48
|
-
default a Zuplo
|
|
49
|
-
|
|
48
|
+
default a Zuplo Gateway project will be created with several buckets that map to
|
|
49
|
+
production, preview, and development (working copy) environments.
|
|
50
50
|
|
|
51
51
|
Enterprise plan customers run complex configurations where buckets are shared
|
|
52
52
|
across gateway projects or even accounts. This can allow your end-users to
|
|
@@ -148,7 +148,7 @@ The response will look like this:
|
|
|
148
148
|
}
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
You can use this API Key to call your Zuplo
|
|
151
|
+
You can use this API Key to call your Zuplo Gateway that's protected by the
|
|
152
152
|
[API Key Authentication](/docs/policies/api-key-inbound) policy.
|
|
153
153
|
|
|
154
154
|
### Query Consumers with API Keys By Tags
|
|
@@ -3,7 +3,7 @@ title: "Azure Pipelines"
|
|
|
3
3
|
sidebar_label: Azure Pipelines
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Azure Pipelines brings enterprise-grade CI/CD to your Zuplo
|
|
6
|
+
Azure Pipelines brings enterprise-grade CI/CD to your Zuplo Gateway. Build
|
|
7
7
|
complex deployment workflows with stages, approvals, and integrations across
|
|
8
8
|
your Azure ecosystem.
|
|
9
9
|
|
|
@@ -4,8 +4,8 @@ sidebar_label: Bitbucket Pipelines
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Bitbucket Pipelines brings CI/CD directly into your Bitbucket workflow. Define
|
|
7
|
-
pipelines in `bitbucket-pipelines.yml` and deploy your Zuplo
|
|
8
|
-
|
|
7
|
+
pipelines in `bitbucket-pipelines.yml` and deploy your Zuplo Gateway alongside
|
|
8
|
+
your code reviews and pull requests.
|
|
9
9
|
|
|
10
10
|
## Why Bitbucket Pipelines with Zuplo?
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ sidebar_label: Custom Code
|
|
|
5
5
|
|
|
6
6
|
Zuplo is fully programmable. You can write custom TypeScript code for inbound
|
|
7
7
|
policies, outbound policies, and request handlers to extend every part of your
|
|
8
|
-
|
|
8
|
+
Zuplo Gateway. This guide covers the function signatures, common patterns, and
|
|
9
9
|
best practices for writing custom code.
|
|
10
10
|
|
|
11
11
|
## Custom Inbound Policy
|
|
@@ -208,8 +208,8 @@ enabled. If you wish to upgrade to a higher TLS version, please contact
|
|
|
208
208
|
|
|
209
209
|
<EnterpriseFeature name="Alias Domains" />
|
|
210
210
|
|
|
211
|
-
Sometimes your
|
|
212
|
-
CDN, WAF or load balancer. In this case, your
|
|
211
|
+
Sometimes your Zuplo Gateway might be running behind another service such as a
|
|
212
|
+
CDN, WAF or load balancer. In this case, your Zuplo Gateway's domain may not be
|
|
213
213
|
the same as the domain your clients use to access your API. In this case, you
|
|
214
214
|
can add an alias domain to your Zuplo project. An alias domain will configure
|
|
215
215
|
your API and documentation to use the alias domain for any public facing URLs
|
|
@@ -8,9 +8,9 @@ flexible and fastest way to work with your Zuplo API and Developer Portal.
|
|
|
8
8
|
|
|
9
9
|
## Local Development
|
|
10
10
|
|
|
11
|
-
The [local experience](./local-development.mdx) allows users to run both the
|
|
12
|
-
Gateway and Dev Portal locally. It also includes a local version of the
|
|
13
|
-
Designer that's integrated into the Zuplo Portal (portal.zuplo.com). Local
|
|
11
|
+
The [local experience](./local-development.mdx) allows users to run both the
|
|
12
|
+
Zuplo Gateway and Dev Portal locally. It also includes a local version of the
|
|
13
|
+
Route Designer that's integrated into the Zuplo Portal (portal.zuplo.com). Local
|
|
14
14
|
development allows customers to use the IDE of their choice and run everything
|
|
15
15
|
locally.
|
|
16
16
|
|
|
@@ -20,7 +20,7 @@ iterate on their APIs without needing to deploy to the cloud.
|
|
|
20
20
|
|
|
21
21
|
Local development is the fastest way to develop and test your APIs as you can
|
|
22
22
|
test changes immediately without waiting for a deployment. Changes to your API
|
|
23
|
-
are automatically loaded into the local
|
|
23
|
+
are automatically loaded into the local Zuplo Gateway and Dev Portal.
|
|
24
24
|
|
|
25
25
|
## Web-Based Development Experience
|
|
26
26
|
|
|
@@ -8,7 +8,7 @@ necessary setup for most people as Zuplo already runs at the edge and can be
|
|
|
8
8
|
used for CDN like caching. However, there are some scenarios where you may want
|
|
9
9
|
to put Zuplo behind Fastly. For example, if you are using Fastly's
|
|
10
10
|
[WAF or DDoS protection](./waf-ddos-fastly.mdx) and want to ensure that all
|
|
11
|
-
traffic goes through Fastly before hitting your Zuplo
|
|
11
|
+
traffic goes through Fastly before hitting your Zuplo Gateway.
|
|
12
12
|
|
|
13
13
|
## Configuring Zuplo as a Fastly Host
|
|
14
14
|
|
|
@@ -16,15 +16,15 @@ The following settings will allow you to run Zuplo as a host behind Fastly.
|
|
|
16
16
|
|
|
17
17
|
### Zuplo Configuration
|
|
18
18
|
|
|
19
|
-
It's recommended that you use a custom domain for your Zuplo
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
It's recommended that you use a custom domain for your Zuplo Gateway. This will
|
|
20
|
+
allow you to more configure your Fastly host as well as ensure that your domain
|
|
21
|
+
is stable regardless of your Zuplo configuration.
|
|
22
22
|
|
|
23
23
|
### Fastly Configuration
|
|
24
24
|
|
|
25
25
|
1. Create a new Fastly CDN service or use an existing one.
|
|
26
26
|
2. Create a new Origin and name it whatever you like.
|
|
27
|
-
3. Set the **Address** to your Zuplo
|
|
27
|
+
3. Set the **Address** to your Zuplo Gateway domain. For example,
|
|
28
28
|
`api.example.com` if using a custom domain, or
|
|
29
29
|
`my-project-main-021839d.zuplo.app` without a custom domain.
|
|
30
30
|
4. Enable TLS and keep the port as `443`.
|