zuplo 7.2.3 → 7.2.4
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/integrations/ai-sdk.mdx +3 -2
- package/docs/ai-gateway/integrations/claude-code.mdx +3 -2
- package/docs/ai-gateway/integrations/codex.mdx +7 -5
- package/docs/ai-gateway/integrations/goose.mdx +4 -3
- package/docs/ai-gateway/integrations/langchain.mdx +3 -3
- package/docs/ai-gateway/integrations/openai.mdx +3 -3
- package/docs/ai-gateway/policies/overview.mdx +3 -17
- package/docs/ai-gateway/universal-api.mdx +4 -3
- package/docs/caching/custom-caching-policy.mdx +1 -1
- package/docs/caching/gateway-caching.mdx +3 -3
- package/docs/caching/overview.mdx +10 -10
- package/docs/dedicated/akamai/ai-powered-applications.mdx +2 -2
- package/docs/dev-portal/zudoku/configuration/search.md +5 -0
- package/docs/dev-portal/zudoku/openapi-extensions/x-mcp-server.md +30 -0
- package/docs/policies/_index.md +12 -7
- package/docs/policies/ai-gateway-auth-v2-inbound/doc.md +168 -0
- package/docs/policies/ai-gateway-auth-v2-inbound/intro.md +10 -0
- package/docs/policies/ai-gateway-auth-v2-inbound/schema.json +74 -0
- package/docs/policies/ai-gateway-configuration-executor-v2-inbound/doc.md +442 -0
- package/docs/policies/ai-gateway-configuration-executor-v2-inbound/intro.md +14 -0
- package/docs/policies/ai-gateway-configuration-executor-v2-inbound/schema.json +60 -0
- package/docs/policies/ai-gateway-configuration-loader-v2-inbound/doc.md +105 -0
- package/docs/policies/ai-gateway-configuration-loader-v2-inbound/intro.md +6 -0
- package/docs/policies/ai-gateway-configuration-loader-v2-inbound/schema.json +60 -0
- package/docs/policies/ai-gateway-dlp-inbound/doc.md +127 -0
- package/docs/policies/ai-gateway-dlp-inbound/intro.md +5 -0
- package/docs/policies/ai-gateway-dlp-inbound/schema.json +4050 -0
- package/docs/policies/ai-gateway-fallback-model-v2-inbound/doc.md +10 -2
- package/docs/policies/ai-gateway-fallback-model-v2-inbound/intro.md +2 -2
- package/docs/policies/ai-gateway-fallback-model-v2-inbound/schema.json +22 -8
- package/docs/policies/ai-gateway-metering-v2-inbound/doc.md +19 -16
- package/docs/policies/ai-gateway-metering-v2-inbound/intro.md +9 -0
- package/docs/policies/ai-gateway-metering-v2-inbound/schema.json +20 -24
- package/docs/policies/ai-gateway-model-filtering-v2-inbound/doc.md +6 -5
- package/docs/policies/ai-gateway-model-filtering-v2-inbound/intro.md +2 -2
- package/docs/policies/ai-gateway-model-filtering-v2-inbound/schema.json +17 -3
- package/docs/policies/ai-gateway-semantic-cache-v2-inbound/doc.md +72 -0
- package/docs/policies/ai-gateway-semantic-cache-v2-inbound/intro.md +9 -0
- package/docs/policies/ai-gateway-semantic-cache-v2-inbound/schema.json +120 -0
- package/docs/policies/akamai-ai-firewall-v2-inbound/doc.md +87 -0
- package/docs/policies/akamai-ai-firewall-v2-inbound/intro.md +10 -0
- package/docs/policies/{akamai-ai-firewall → akamai-ai-firewall-v2-inbound}/schema.json +36 -9
- package/docs/policies/akamai-firewall-for-ai-inbound/schema.json +1 -0
- package/docs/policies/akamai-firewall-for-ai-outbound/schema.json +1 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +1 -0
- package/docs/policies/api-key-inbound/schema.json +1 -0
- package/docs/policies/audit-log-inbound/schema.json +1 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/authzen-inbound/schema.json +1 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +1 -0
- package/docs/policies/basic-auth-inbound/schema.json +1 -0
- package/docs/policies/bot-detection-inbound/schema.json +1 -0
- package/docs/policies/brownout-inbound/schema.json +1 -0
- package/docs/policies/caching-inbound/schema.json +1 -0
- package/docs/policies/cdn-cache-control-outbound/schema.json +1 -0
- package/docs/policies/change-method-inbound/schema.json +1 -0
- package/docs/policies/clear-headers-inbound/schema.json +1 -0
- package/docs/policies/clear-headers-outbound/schema.json +1 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/comet-opik-tracing-v2-inbound/doc.md +78 -0
- package/docs/policies/comet-opik-tracing-v2-inbound/intro.md +10 -0
- package/docs/policies/{comet-opik-tracing-inbound → comet-opik-tracing-v2-inbound}/schema.json +40 -5
- package/docs/policies/complex-rate-limit-inbound/schema.json +1 -0
- package/docs/policies/composite-inbound/schema.json +1 -0
- package/docs/policies/composite-outbound/schema.json +1 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +1 -0
- package/docs/policies/data-loss-prevention-inbound/doc.md +22 -6
- package/docs/policies/data-loss-prevention-inbound/schema.json +10 -1
- package/docs/policies/data-loss-prevention-outbound/doc.md +23 -6
- package/docs/policies/data-loss-prevention-outbound/schema.json +10 -1
- package/docs/policies/firebase-jwt-inbound/schema.json +1 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +1 -0
- package/docs/policies/galileo-tracing-v2-inbound/doc.md +72 -0
- package/docs/policies/galileo-tracing-v2-inbound/intro.md +8 -0
- package/docs/policies/{galileo-tracing-inbound → galileo-tracing-v2-inbound}/schema.json +40 -5
- package/docs/policies/geo-filter-inbound/schema.json +1 -0
- package/docs/policies/graphql-analytics-outbound/schema.json +1 -0
- package/docs/policies/graphql-cache-inbound/schema.json +1 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +1 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +1 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +1 -0
- package/docs/policies/http-deprecation-outbound/schema.json +1 -0
- package/docs/policies/ip-address-restriction-inbound/schema.json +1 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +1 -0
- package/docs/policies/ldap-auth-inbound/schema.json +1 -0
- package/docs/policies/mcp-auth0-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-capability-filter-inbound/schema.json +1 -0
- package/docs/policies/mcp-clerk-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-cognito-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-entra-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-google-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-keycloak-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-logto-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-okta-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-onelogin-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-ping-oauth-inbound/schema.json +1 -0
- package/docs/policies/mcp-token-exchange-inbound/schema.json +1 -0
- package/docs/policies/mcp-workos-oauth-inbound/schema.json +1 -0
- package/docs/policies/mock-api-inbound/schema.json +1 -0
- package/docs/policies/moesif-inbound/schema.json +1 -0
- package/docs/policies/monetization-inbound/schema.json +1 -0
- package/docs/policies/mtls-auth-inbound/schema.json +1 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +1 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/openfga-authz-inbound/schema.json +1 -0
- package/docs/policies/openmeter-inbound/schema.json +1 -0
- package/docs/policies/prompt-injection-outbound/schema.json +1 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +1 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +1 -0
- package/docs/policies/quota-inbound/schema.json +1 -0
- package/docs/policies/rate-limit-inbound/schema.json +1 -0
- package/docs/policies/readme-metrics-inbound/schema.json +1 -0
- package/docs/policies/remove-headers-inbound/schema.json +1 -0
- package/docs/policies/remove-headers-outbound/schema.json +1 -0
- package/docs/policies/remove-query-params-inbound/schema.json +1 -0
- package/docs/policies/replace-string-outbound/schema.json +1 -0
- package/docs/policies/request-size-limit-inbound/schema.json +1 -0
- package/docs/policies/request-validation-inbound/schema.json +1 -0
- package/docs/policies/require-origin-inbound/schema.json +1 -0
- package/docs/policies/require-user-claims-inbound/schema.json +1 -0
- package/docs/policies/secret-masking-outbound/schema.json +1 -0
- package/docs/policies/semantic-cache-inbound/schema.json +3 -2
- package/docs/policies/set-body-inbound/schema.json +1 -0
- package/docs/policies/set-headers-inbound/schema.json +1 -0
- package/docs/policies/set-headers-outbound/schema.json +1 -0
- package/docs/policies/set-query-params-inbound/schema.json +1 -0
- package/docs/policies/set-status-outbound/schema.json +1 -0
- package/docs/policies/set-upstream-api-key-inbound/schema.json +1 -0
- package/docs/policies/sleep-inbound/schema.json +1 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +1 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/traffic-splitting-inbound/schema.json +1 -0
- package/docs/policies/upstream-aws-federated-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-aws-service-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +1 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +1 -0
- package/docs/policies/upstream-oauth-client-credentials-inbound/schema.json +1 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +1 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +1 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +1 -0
- package/docs/policies/xml-to-json-outbound/schema.json +1 -0
- package/package.json +5 -5
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +0 -122
- package/docs/ai-gateway/policies/authentication.mdx +0 -43
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +0 -177
- package/docs/ai-gateway/policies/fallback-model.mdx +0 -40
- package/docs/ai-gateway/policies/galileo-tracing.mdx +0 -161
- package/docs/ai-gateway/policies/metering.mdx +0 -47
- package/docs/ai-gateway/policies/model-filtering.mdx +0 -49
- package/docs/ai-gateway/policies/semantic-cache.mdx +0 -48
|
@@ -33,7 +33,7 @@ identifiers, `secret-aws` enables both AWS entities. Two named groups (`pii`,
|
|
|
33
33
|
| `id` | `id-us-ssn`, `id-us-itin`, `id-us-passport`, `id-uk-nino`, `id-uk-nhs` (mod-11), `id-ca-sin` (Luhn), `id-au-abn`, `id-au-acn`, `id-au-tfn`, `id-au-medicare` (all checksummed), `id-in-aadhaar` (Verhoeff), `id-in-pan`, `id-sg-nric` (checksum), `id-es-nif` (checksum), `id-it-fiscal-code` (checksum), `id-pl-pesel` (checksum), `id-nl-bsn` (11-proef), `id-br-cpf` (checksum), `id-fr-nir` (mod-97) |
|
|
34
34
|
| `contact` | `contact-email`, `contact-phone` |
|
|
35
35
|
| `network` | `network-ipv4`, `network-ipv6`, `network-mac` |
|
|
36
|
-
| `pii` | `contact` + `id`
|
|
36
|
+
| `pii` | `contact` + `id` + `finance-credit-card` + `finance-iban` |
|
|
37
37
|
| Prefixes | `id-us`, `id-uk`, `id-au`, `id-ca`, `id-in`, `id-sg`, `id-es`, `id-it`, `id-pl`, `id-nl`, `id-br`, `id-fr`, `finance-us`, `secret-aws` — everything whose id starts with that prefix |
|
|
38
38
|
| `region-eu` | `id-es-nif`, `id-it-fiscal-code`, `id-pl-pesel`, `id-nl-bsn`, `id-fr-nir`, `finance-iban` |
|
|
39
39
|
|
|
@@ -50,9 +50,12 @@ For example, with the `id-uk-nhs` entity enabled, `{"nhsNumber": "9434765919"}`
|
|
|
50
50
|
is masked while the same digits in `{"orderId": "9434765919"}` pass through
|
|
51
51
|
untouched.
|
|
52
52
|
|
|
53
|
-
The threshold is configurable via `minConfidence` (default `0.5`)
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
The threshold is configurable via `minConfidence` (default `0.5`). Lowering it
|
|
54
|
+
surfaces context-dependent entities without their context words. Raising it is
|
|
55
|
+
not a precision filter: any recognizer whose base confidence falls below the
|
|
56
|
+
threshold stops matching except near its context words, and most
|
|
57
|
+
checksum-validated recognizers run at `0.85`, so high thresholds disable most
|
|
58
|
+
of the catalog. To narrow detection, scope the `entities` list instead.
|
|
56
59
|
|
|
57
60
|
## Custom patterns
|
|
58
61
|
|
|
@@ -62,11 +65,24 @@ JavaScript regular expression `pattern`, and optionally a `confidence` and
|
|
|
62
65
|
and skipped rather than failing the response. Remember to escape backslashes for
|
|
63
66
|
JSON (for example `\\d` to match a digit).
|
|
64
67
|
|
|
68
|
+
## Allowed values
|
|
69
|
+
|
|
70
|
+
Use `allowValues` to exempt specific values that would otherwise match — for
|
|
71
|
+
example the Stripe test card number `4242 4242 4242 4242` in a payments
|
|
72
|
+
sandbox, or a public support email address. Entries are compared against the
|
|
73
|
+
exact matched text (case-sensitive, separators included), so list every
|
|
74
|
+
written form you want to allow.
|
|
75
|
+
|
|
65
76
|
## Content types
|
|
66
77
|
|
|
67
78
|
Only text-based bodies (JSON, XML, form-encoded, and `text/*`) are scanned;
|
|
68
|
-
binary bodies pass through untouched.
|
|
69
|
-
`
|
|
79
|
+
binary bodies pass through untouched. Server-sent event streams
|
|
80
|
+
(`text/event-stream`) are excluded from the default allow-list: scanning
|
|
81
|
+
buffers the whole response, which would hold back every event until the
|
|
82
|
+
stream ends — for an upstream SSE response, time-to-first-byte becomes the
|
|
83
|
+
full stream duration. Override the allow-list with the `contentTypes` option
|
|
84
|
+
if you need to scan a different set of content types (including
|
|
85
|
+
`text/event-stream`, if you accept the buffering).
|
|
70
86
|
|
|
71
87
|
## Configuration
|
|
72
88
|
|
|
@@ -79,6 +95,7 @@ binary bodies pass through untouched. Override the allow-list with the
|
|
|
79
95
|
- `action`: `mask`, `block`, or `log`. **Default:** `mask`
|
|
80
96
|
- `mask`: Replacement string used when `action` is `mask`. **Default:**
|
|
81
97
|
`[REDACTED]`
|
|
98
|
+
- `allowValues`: Exact matched-text values that are never reported
|
|
82
99
|
- `minConfidence`: Detection threshold (0-1). **Default:** `0.5`
|
|
83
100
|
- `contentTypes`: Override the scannable content-type allow-list
|
|
84
101
|
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "data-loss-prevention-outbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Scans the upstream response body for sensitive data — PII, secrets, and financial identifiers — using an extensible catalog of built-in recognizers plus any custom patterns, and takes a configurable action when a match is found.\n\nThe action is one of `mask` (redact matches before returning the response), `block` (replace the response with a `422` listing the detected entity names only), or `log` (record a warning and return unchanged). Only text content types are inspected; binary bodies pass through untouched, and the body is read from a clone so the client still receives the original stream.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -187,6 +188,14 @@
|
|
|
187
188
|
}
|
|
188
189
|
}
|
|
189
190
|
},
|
|
191
|
+
"allowValues": {
|
|
192
|
+
"type": "array",
|
|
193
|
+
"x-advanced": true,
|
|
194
|
+
"description": "Values that are never reported as findings, compared against the exact matched text (case-sensitive, separators included). Use this to exempt well-known non-sensitive values that share a sensitive shape — for example the Stripe test card number `4242 4242 4242 4242` in a payments sandbox, or a public support email address. List every written form you want to allow (a spaced and an unspaced card number are different matches).",
|
|
195
|
+
"items": {
|
|
196
|
+
"type": "string"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
190
199
|
"minConfidence": {
|
|
191
200
|
"type": "number",
|
|
192
201
|
"minimum": 0,
|
|
@@ -194,7 +203,7 @@
|
|
|
194
203
|
"default": 0.5,
|
|
195
204
|
"x-show-example": false,
|
|
196
205
|
"x-advanced": true,
|
|
197
|
-
"description": "Minimum confidence (0-1) a match must reach to count as a finding.
|
|
206
|
+
"description": "Minimum confidence (0-1) a match must reach to count as a finding. Every match starts at its recognizer's base confidence and gains a fixed boost of 0.45 when one of the recognizer's context words appears near it. Ambiguous shapes (for example `finance-us-bank-account` or `finance-cvv`) have a low base confidence and only cross the default threshold of 0.5 with that boost; lower the threshold to surface them without context. Raising the threshold is not a precision filter: any recognizer whose base confidence falls below it stops matching entirely except near its context words, and most checksum-validated recognizers run at 0.85, so values above 0.85 disable most of the catalog. To narrow detection, scope the `entities` list instead."
|
|
198
207
|
},
|
|
199
208
|
"contentTypes": {
|
|
200
209
|
"type": "array",
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Galileo Tracing
|
|
2
|
+
|
|
3
|
+
The Galileo Tracing policy integrates [Galileo](https://www.galileo.ai/) with
|
|
4
|
+
the AI Gateway. It automatically records LLM inputs, outputs, model information,
|
|
5
|
+
token usage, request metadata, and timing so you can debug applications and
|
|
6
|
+
monitor quality in production.
|
|
7
|
+
|
|
8
|
+
The policy supports Chat Completions, Responses, and Anthropic Messages. For a
|
|
9
|
+
streaming response, it observes a clone of the original stream in the background
|
|
10
|
+
when that stream is still readable; the client does not wait for trace delivery.
|
|
11
|
+
If an earlier response hook has already consumed the original stream, output
|
|
12
|
+
tracing is skipped and the client response continues unchanged.
|
|
13
|
+
|
|
14
|
+
## Configure the policy
|
|
15
|
+
|
|
16
|
+
Create a Galileo project and log stream, then generate an API key. The project
|
|
17
|
+
ID and log stream ID appear in the Galileo log-stream URL. Declare the policy in
|
|
18
|
+
`config/policies.json` and add it to each application chain that should emit
|
|
19
|
+
traces:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"name": "galileo-tracing-v2-inbound",
|
|
24
|
+
"policyType": "galileo-tracing-v2",
|
|
25
|
+
"handler": {
|
|
26
|
+
"export": "GalileoTracingV2InboundPolicy",
|
|
27
|
+
"module": "$import(@zuplo/runtime)",
|
|
28
|
+
"options": {
|
|
29
|
+
"apiKey": "$env(GALILEO_API_KEY)",
|
|
30
|
+
"projectId": "your-project-id",
|
|
31
|
+
"logStreamId": "your-log-stream-id"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Place the policy near the end of the chain so the trace records request-body
|
|
38
|
+
changes made by earlier policies. The recorded model label comes from the app
|
|
39
|
+
configuration when available, then falls back to the request body. A model
|
|
40
|
+
selected through request-scoped routing is not included in this trace label.
|
|
41
|
+
|
|
42
|
+
## Options
|
|
43
|
+
|
|
44
|
+
| Option | Default | What it does |
|
|
45
|
+
| ---------------- | ------------------------ | ------------------------------------------------------ |
|
|
46
|
+
| `apiKey` | Required | Authenticates to Galileo. |
|
|
47
|
+
| `projectId` | Required | Selects the Galileo project. |
|
|
48
|
+
| `logStreamId` | Required | Selects the Galileo log stream. |
|
|
49
|
+
| `baseUrl` | `https://api.galileo.ai` | Overrides the Galileo API URL. |
|
|
50
|
+
| `endpoints` | All shapes | Limits tracing to selected AI Gateway endpoint shapes. |
|
|
51
|
+
| `onUnknownShape` | `skip` | Skips or denies a request whose shape cannot be read. |
|
|
52
|
+
|
|
53
|
+
As an observer, the policy fails open by default. A Galileo API failure is
|
|
54
|
+
logged but does not fail the AI request. Setting `onUnknownShape` to `deny` only
|
|
55
|
+
changes the behavior for an uninspectable request shape.
|
|
56
|
+
|
|
57
|
+
## Trace structure
|
|
58
|
+
|
|
59
|
+
Each request produces a hierarchy that Galileo can analyze:
|
|
60
|
+
|
|
61
|
+
1. A top-level trace represents the complete AI Gateway request.
|
|
62
|
+
2. A workflow span represents gateway processing.
|
|
63
|
+
3. An LLM span records the provider interaction.
|
|
64
|
+
|
|
65
|
+
Records include prompt and completion text, model parameters, finish reasons,
|
|
66
|
+
input and output token counts, duration, Zuplo request ID, and route. This data
|
|
67
|
+
supports trace inspection, model comparison, quality evaluation, cost analysis,
|
|
68
|
+
and production monitoring.
|
|
69
|
+
|
|
70
|
+
## Additional resources
|
|
71
|
+
|
|
72
|
+
- [Galileo documentation](https://www.galileo.ai/docs)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
The Galileo Tracing policy sends AI Gateway requests, responses, token usage,
|
|
2
|
+
and timing data to Galileo for observability and quality evaluation. It supports
|
|
3
|
+
streaming and non-streaming traffic across all AI Gateway request shapes.
|
|
4
|
+
|
|
5
|
+
Place it near the end of the application policy chain so traces reflect the
|
|
6
|
+
request body after earlier policy changes. Trace delivery runs in the background
|
|
7
|
+
and does not modify the client response. Streaming output tracing is skipped if
|
|
8
|
+
an earlier response hook has already consumed the original stream.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft-07/schema",
|
|
3
|
-
"$id": "https://cdn.zuplo.com/policies/runtime/schemas/galileo-tracing-inbound.json",
|
|
3
|
+
"$id": "https://cdn.zuplo.com/policies/runtime/schemas/galileo-tracing-v2-inbound.json",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"title": "Galileo Tracing",
|
|
6
6
|
"isDeprecated": false,
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"isInternal": false,
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
|
-
"requiresAI":
|
|
12
|
+
"requiresAI": true,
|
|
13
|
+
"policyType": "galileo-tracing-v2",
|
|
13
14
|
"products": ["ai-gateway"],
|
|
14
15
|
"description": "Galileo Tracing Inbound Policy",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
"required": ["export", "module", "options"],
|
|
22
23
|
"properties": {
|
|
23
24
|
"export": {
|
|
24
|
-
"const": "
|
|
25
|
+
"const": "GalileoTracingV2InboundPolicy",
|
|
25
26
|
"description": "The name of the exported type"
|
|
26
27
|
},
|
|
27
28
|
"module": {
|
|
@@ -29,9 +30,17 @@
|
|
|
29
30
|
"description": "The module containing the policy"
|
|
30
31
|
},
|
|
31
32
|
"options": {
|
|
33
|
+
"x-zuplo-policy-type": "galileo-tracing-v2",
|
|
32
34
|
"title": "Galileo Tracing",
|
|
33
35
|
"description": "Track AI Gateway requests and responses using Galileo's LLM observability platform.",
|
|
34
36
|
"type": "object",
|
|
37
|
+
"examples": [
|
|
38
|
+
{
|
|
39
|
+
"apiKey": "$env(GALILEO_API_KEY)",
|
|
40
|
+
"projectId": "your-project-id",
|
|
41
|
+
"logStreamId": "your-log-stream-id"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
35
44
|
"properties": {
|
|
36
45
|
"apiKey": {
|
|
37
46
|
"description": "The Galileo API key for authentication.",
|
|
@@ -49,6 +58,28 @@
|
|
|
49
58
|
"x-advanced": true,
|
|
50
59
|
"description": "The base URL for the Galileo API (optional, defaults to https://api.galileo.ai).",
|
|
51
60
|
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
"endpoints": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"title": "Applicable Endpoints",
|
|
65
|
+
"x-advanced": true,
|
|
66
|
+
"description": "The endpoint shapes this policy applies to. Omit to apply to all (openai-chat, openai-responses, anthropic-messages).",
|
|
67
|
+
"items": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"enum": [
|
|
70
|
+
"openai-chat",
|
|
71
|
+
"openai-responses",
|
|
72
|
+
"anthropic-messages"
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"onUnknownShape": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"title": "On Unknown Shape",
|
|
79
|
+
"x-advanced": true,
|
|
80
|
+
"description": "What to do on a shape the policy cannot read. As an observer this defaults to 'skip' (fail open — pass through untraced).",
|
|
81
|
+
"enum": ["deny", "skip"],
|
|
82
|
+
"default": "skip"
|
|
52
83
|
}
|
|
53
84
|
},
|
|
54
85
|
"required": ["apiKey", "projectId", "logStreamId"],
|
|
@@ -57,9 +88,13 @@
|
|
|
57
88
|
},
|
|
58
89
|
"examples": [
|
|
59
90
|
{
|
|
60
|
-
"export": "
|
|
91
|
+
"export": "GalileoTracingV2InboundPolicy",
|
|
61
92
|
"module": "$import(@zuplo/runtime)",
|
|
62
|
-
"options": {
|
|
93
|
+
"options": {
|
|
94
|
+
"apiKey": "$env(GALILEO_API_KEY)",
|
|
95
|
+
"projectId": "your-project-id",
|
|
96
|
+
"logStreamId": "your-log-stream-id"
|
|
97
|
+
}
|
|
63
98
|
}
|
|
64
99
|
]
|
|
65
100
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "geo-filter-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Block requests based on geo-location parameters: country, region code, and ASN",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": true,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "graphql-analytics-outbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Reports GraphQL errors returned in response bodies to Zuplo's GraphQL analytics. GraphQL servers following the standard Apollo / graphql-yoga pattern return `200 OK` with an `errors[]` array in the body when an operation fails, which HTTP-level analytics alone report as a success — add this policy to a GraphQL route and failed operations show up as failures on the GraphQL dashboard, classified by error type.\n\nEach error in `errors[]` is classified from its `extensions.code` following the Apollo Server conventions (`GRAPHQL_PARSE_FAILED` → `syntax`, `GRAPHQL_VALIDATION_FAILED` → `validation`, `UNAUTHENTICATED` / `FORBIDDEN` → `auth`, timeout codes → `timeout`); custom codes can be mapped with `errorCodeClassification`, and anything unrecognized falls back to `defaultErrorClass` (`resolver`). Optionally set `logErrors` to also write a structured warning per errored response. The policy reads up to `maxScanBytes` of the body (128 KiB by default, 5 MiB maximum), scanning it for the `errors` token; a response larger than that is treated as error-free. When the token is found and the body fits, it is parsed and its errors reported.\n\nThe response always passes through unchanged — the body is read from a clone, and any internal failure is swallowed so reporting can never break the request. The route must be marked `x-graphql: true` in `routes.oas.json` (which enables GraphQL analytics for the route); without the marker the policy logs a warning and does nothing.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "graphql-cache-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Caches GraphQL query responses at the edge so identical queries are served without a round-trip to the origin.\n\nUnlike CDN caching that keys on the raw request body, this policy parses the GraphQL document and normalizes it before hashing: insignificant whitespace, field formatting, and fragment layout are collapsed, and variable object keys are sorted. Two requests that are semantically identical therefore share a cache entry even when their bodies differ byte-for-byte. There is no query size or nesting-depth limit.\n\nOnly `query` operations are cached. Mutations, subscriptions, malformed documents, and non-JSON bodies are forwarded to the origin untouched. Cache hits and misses are reported on the `x-cache` response header, with a short key fingerprint on `x-cache-key`.\n\nTo avoid serving one user's data to another, requests carrying an `authorization` or `cookie` header are not cached by default. Use `cacheKeyHeaders` to opt into caching them: each listed header's value is included in the cache key, so distinct credentials get distinct cache entries.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "graphql-complexity-limit-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Policy that limits the complexity and depth of GraphQL queries to prevent abuse. Protects your GraphQL API from expensive queries that could cause performance issues or denial of service attacks.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "graphql-disable-introspection-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Policy that disables GraphQL introspection queries in production. Introspection allows clients to discover the schema, which can be a security risk as it exposes your entire API structure.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "graphql-introspection-filter-outbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Filters GraphQL introspection responses to exclude specific types and fields.\n\nThis policy intercepts GraphQL introspection query responses and removes configured types and fields from the schema. Useful for hiding internal types or sensitive fields from the public schema.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "http-deprecation-outbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Sets HTTP deprecation headers on the outgoing response following the IETF HTTP Deprecation Header standard. Supports the Deprecation, Sunset, and Link headers.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "ip-address-restriction-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Restricts which client IP addresses can call a route using an allow list, a deny list, or both. Entries are individual IP addresses or CIDR ranges, in IPv4 or IPv6.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-auth0-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Auth0.\n\nAuth0-friendly wrapper around `McpOAuthInboundPolicy`. Provide `auth0Domain` and `clientId`; the constructor derives the OIDC issuer, JWKS URL, and Auth0 authorize/token endpoints automatically and runs the resulting shape through the same Zod schema as the generic policy.\n\nValidation runs lazily inside the policy constructor, which the runtime caches per policy name — so a misconfigured policy fails the first request with a `ConfigurationError` (surfaced in the 500 problem body) rather than crashing boot.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-capability-filter-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Curate MCP capabilities advertised and reachable through `McpProxyHandler`.\n\nValidation runs lazily inside the policy constructor, which the runtime caches per policy name. Misconfigured options therefore fail on first use with a customer-facing `ConfigurationError` instead of failing at module load.\n\nOptional per-caller access control (`accessControl`) narrows the curated catalog. See `claimsCapabilityResolver` for built-in role/group matching and `McpCapabilityResolver` for custom resolvers.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-clerk-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Clerk.\n\nClerk-friendly wrapper around `McpOAuthInboundPolicy`. Provide Clerk's Frontend API URL plus the OAuth application client id and secret; the constructor derives the Clerk issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-cognito-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Amazon Cognito.\n\nCognito-friendly wrapper around `McpOAuthInboundPolicy`. Provide an AWS region, user pool id, user pool domain, client id, and client secret; the constructor derives the Cognito issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-entra-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Microsoft Entra ID.\n\nEntra-friendly wrapper around `McpOAuthInboundPolicy`. Provide a tenant UUID, application client id, and client secret; the constructor derives the Entra v2 issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-google-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Google.\n\nGoogle-friendly wrapper around `McpOAuthInboundPolicy`. Provide `clientId` and `clientSecret`; the constructor uses Google's fixed OIDC issuer, JWKS URL, authorize URL, and token URL, then runs the resulting shape through the same Zod schema as the generic policy.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-keycloak-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Keycloak.\n\nKeycloak-friendly wrapper around `McpOAuthInboundPolicy`. Provide the Keycloak server root, realm, client id, and client secret; the constructor derives the realm issuer, JWKS URL, authorize URL, and token URL from Keycloak's documented OIDC endpoint layout.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-logto-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Logto.\n\nLogto-friendly wrapper around `McpOAuthInboundPolicy`. Provide the Logto tenant endpoint, client id, and client secret; the constructor derives the Logto `/oidc` issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token.\n\nThe gateway hosts its own OAuth authorization server endpoints (DCR, `/authorize`, `/token`, `/callback`) — registered automatically when this policy is present in `policies.json`. End-user browser login is delegated to the OpenID Connect identity provider configured via the `oidc` and `browserLogin` policy options.\n\nValidation runs lazily inside the policy constructor, which the runtime caches per policy name — so a misconfigured policy fails the first request with a `ConfigurationError` (surfaced in the 500 problem body) rather than crashing boot.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-okta-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to Okta.\n\nOkta-friendly wrapper around `McpOAuthInboundPolicy`. Provide an Okta org domain, optional authorization server id, client id, and client secret; the constructor derives the Okta issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-onelogin-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to OneLogin.\n\nOneLogin-friendly wrapper around `McpOAuthInboundPolicy`. Provide the OneLogin account subdomain, client id, and client secret; the constructor derives OneLogin's OIDC issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-ping-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to PingOne.\n\nPingOne-friendly wrapper around `McpOAuthInboundPolicy`. Provide a PingOne environment ID plus optional region, or a PingOne custom domain, with client ID and client secret; the constructor derives the PingOne issuer, JWKS URL, authorize URL, and token URL.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-token-exchange-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Resolve a gateway-managed upstream MCP credential and apply it to the request before the normal Zuplo route handler forwards the request.\n\nValidation runs lazily inside the policy constructor, which the runtime caches per policy name — so a misconfigured policy fails the first request with a `ConfigurationError` (surfaced in the 500 problem body) rather than crashing boot.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mcp-workos-oauth-inbound",
|
|
13
14
|
"products": ["mcp-gateway"],
|
|
14
15
|
"description": "Authenticate MCP gateway requests using a gateway-issued OAuth access token, with browser login delegated to WorkOS.\n\nWorkOS-friendly wrapper around `McpOAuthInboundPolicy`. Provide `clientId` and `clientSecret`; the constructor derives the WorkOS OIDC issuer, JWKS URL, authorize URL, and token URL automatically and runs the resulting shape through the same Zod schema as the generic policy.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "mock-api-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Returns example responses from the OpenAPI document associated with this route.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "moesif-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "Moesif is an API analytics and billing service. This policy allows you to send metering calls for each API to their events batch endpoint.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "open-id-jwt-auth-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "The Open ID JWT Authentication policy allows you to authenticate incoming requests using an Open ID compliant bearer token.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": false,
|
|
13
|
+
"policyType": "openmeter-inbound",
|
|
13
14
|
"products": ["api-gateway"],
|
|
14
15
|
"description": "OpenMeter is a usage metering service. This policy allows you to send metering calls for each API to their event ingest endpoint. It also supports entitlement checking to verify if a subject has access to a feature.",
|
|
15
16
|
"deprecatedMessage": "",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"isBeta": false,
|
|
11
11
|
"isHidden": false,
|
|
12
12
|
"requiresAI": true,
|
|
13
|
+
"policyType": "prompt-injection",
|
|
13
14
|
"products": ["ai-gateway", "mcp-gateway"],
|
|
14
15
|
"description": "Uses an LLM agent to detect prompt injection attempts in user provided content or potentially poisoned response bodies. This is primarily intended to be used with downstream LLM agents who are at risk of having prompt injection attacks executed against them.",
|
|
15
16
|
"deprecatedMessage": "",
|