@openrouter/sdk 0.12.33 → 0.12.34

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.
@@ -20,11 +20,11 @@ export declare function chatSend(client: OpenRouterCore, request: operations.Sen
20
20
  chatRequest: {
21
21
  stream?: false;
22
22
  };
23
- }, options?: RequestOptions): APIPromise<Result<models.ChatResult, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
23
+ }, options?: RequestOptions): APIPromise<Result<models.ChatResult, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.ForbiddenResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
24
24
  export declare function chatSend(client: OpenRouterCore, request: operations.SendChatCompletionRequestRequest & {
25
25
  chatRequest: {
26
26
  stream: true;
27
27
  };
28
- }, options?: RequestOptions): APIPromise<Result<EventStream<models.ChatStreamChunk>, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
29
- export declare function chatSend(client: OpenRouterCore, request: operations.SendChatCompletionRequestRequest, options?: RequestOptions): APIPromise<Result<operations.SendChatCompletionRequestResponse, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
28
+ }, options?: RequestOptions): APIPromise<Result<EventStream<models.ChatStreamChunk>, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.ForbiddenResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
29
+ export declare function chatSend(client: OpenRouterCore, request: operations.SendChatCompletionRequestRequest, options?: RequestOptions): APIPromise<Result<operations.SendChatCompletionRequestResponse, errors.BadRequestResponseError | errors.UnauthorizedResponseError | errors.PaymentRequiredResponseError | errors.ForbiddenResponseError | errors.NotFoundResponseError | errors.RequestTimeoutResponseError | errors.PayloadTooLargeResponseError | errors.UnprocessableEntityResponseError | errors.TooManyRequestsResponseError | errors.InternalServerResponseError | errors.BadGatewayResponseError | errors.ServiceUnavailableResponseError | errors.EdgeNetworkTimeoutResponseError | errors.ProviderOverloadedResponseError | OpenRouterError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
30
30
  //# sourceMappingURL=chatSend.d.ts.map
@@ -77,6 +77,7 @@ async function $do(client, request, options) {
77
77
  "400",
78
78
  "401",
79
79
  "402",
80
+ "403",
80
81
  "404",
81
82
  "408",
82
83
  "413",
@@ -100,7 +101,7 @@ async function $do(client, request, options) {
100
101
  const responseFields = {
101
102
  HttpMeta: { Response: response, Request: req },
102
103
  };
103
- const [result] = await M.match(M.json(200, operations.SendChatCompletionRequestResponse$inboundSchema), M.sse(200, operations.SendChatCompletionRequestResponse$inboundSchema), M.jsonErr(400, errors.BadRequestResponseError$inboundSchema), M.jsonErr(401, errors.UnauthorizedResponseError$inboundSchema), M.jsonErr(402, errors.PaymentRequiredResponseError$inboundSchema), M.jsonErr(404, errors.NotFoundResponseError$inboundSchema), M.jsonErr(408, errors.RequestTimeoutResponseError$inboundSchema), M.jsonErr(413, errors.PayloadTooLargeResponseError$inboundSchema), M.jsonErr(422, errors.UnprocessableEntityResponseError$inboundSchema), M.jsonErr(429, errors.TooManyRequestsResponseError$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.jsonErr(502, errors.BadGatewayResponseError$inboundSchema), M.jsonErr(503, errors.ServiceUnavailableResponseError$inboundSchema), M.jsonErr(524, errors.EdgeNetworkTimeoutResponseError$inboundSchema), M.jsonErr(529, errors.ProviderOverloadedResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
104
+ const [result] = await M.match(M.json(200, operations.SendChatCompletionRequestResponse$inboundSchema), M.sse(200, operations.SendChatCompletionRequestResponse$inboundSchema), M.jsonErr(400, errors.BadRequestResponseError$inboundSchema), M.jsonErr(401, errors.UnauthorizedResponseError$inboundSchema), M.jsonErr(402, errors.PaymentRequiredResponseError$inboundSchema), M.jsonErr(403, errors.ForbiddenResponseError$inboundSchema), M.jsonErr(404, errors.NotFoundResponseError$inboundSchema), M.jsonErr(408, errors.RequestTimeoutResponseError$inboundSchema), M.jsonErr(413, errors.PayloadTooLargeResponseError$inboundSchema), M.jsonErr(422, errors.UnprocessableEntityResponseError$inboundSchema), M.jsonErr(429, errors.TooManyRequestsResponseError$inboundSchema), M.jsonErr(500, errors.InternalServerResponseError$inboundSchema), M.jsonErr(502, errors.BadGatewayResponseError$inboundSchema), M.jsonErr(503, errors.ServiceUnavailableResponseError$inboundSchema), M.jsonErr(524, errors.EdgeNetworkTimeoutResponseError$inboundSchema), M.jsonErr(529, errors.ProviderOverloadedResponseError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
104
105
  if (!result.ok) {
105
106
  return [result, { status: "complete", request: req, response }];
106
107
  }
@@ -49,8 +49,8 @@ export declare function serverURLFromOptions(options: SDKOptions): URL | null;
49
49
  export declare const SDK_METADATA: {
50
50
  readonly language: "typescript";
51
51
  readonly openapiDocVersion: "1.0.0";
52
- readonly sdkVersion: "0.12.33";
52
+ readonly sdkVersion: "0.12.34";
53
53
  readonly genVersion: "2.879.1";
54
- readonly userAgent: "speakeasy-sdk/typescript 0.12.33 2.879.1 1.0.0 @openrouter/sdk";
54
+ readonly userAgent: "speakeasy-sdk/typescript 0.12.34 2.879.1 1.0.0 @openrouter/sdk";
55
55
  };
56
56
  //# sourceMappingURL=config.d.ts.map
package/esm/lib/config.js CHANGED
@@ -26,8 +26,8 @@ export function serverURLFromOptions(options) {
26
26
  export const SDK_METADATA = {
27
27
  language: "typescript",
28
28
  openapiDocVersion: "1.0.0",
29
- sdkVersion: "0.12.33",
29
+ sdkVersion: "0.12.34",
30
30
  genVersion: "2.879.1",
31
- userAgent: "speakeasy-sdk/typescript 0.12.33 2.879.1 1.0.0 @openrouter/sdk",
31
+ userAgent: "speakeasy-sdk/typescript 0.12.34 2.879.1 1.0.0 @openrouter/sdk",
32
32
  };
33
33
  //# sourceMappingURL=config.js.map
@@ -0,0 +1,18 @@
1
+ import * as z from "zod/v4";
2
+ import { OpenEnum } from "../types/enums.js";
3
+ /**
4
+ * Action taken when the pattern matches
5
+ */
6
+ export declare const ContentFilterAction: {
7
+ readonly Redact: "redact";
8
+ readonly Block: "block";
9
+ };
10
+ /**
11
+ * Action taken when the pattern matches
12
+ */
13
+ export type ContentFilterAction = OpenEnum<typeof ContentFilterAction>;
14
+ /** @internal */
15
+ export declare const ContentFilterAction$inboundSchema: z.ZodType<ContentFilterAction, unknown>;
16
+ /** @internal */
17
+ export declare const ContentFilterAction$outboundSchema: z.ZodType<string, ContentFilterAction>;
18
+ //# sourceMappingURL=contentfilteraction.d.ts.map
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: b903dba08901
4
+ */
5
+ import * as openEnums from "../types/enums.js";
6
+ /**
7
+ * Action taken when the pattern matches
8
+ */
9
+ export const ContentFilterAction = {
10
+ Redact: "redact",
11
+ Block: "block",
12
+ };
13
+ /** @internal */
14
+ export const ContentFilterAction$inboundSchema = openEnums.inboundSchema(ContentFilterAction);
15
+ /** @internal */
16
+ export const ContentFilterAction$outboundSchema = openEnums.outboundSchema(ContentFilterAction);
17
+ //# sourceMappingURL=contentfilteraction.js.map
@@ -0,0 +1,19 @@
1
+ import * as z from "zod/v4";
2
+ import { OpenEnum } from "../types/enums.js";
3
+ /**
4
+ * Action taken when the builtin filter triggers
5
+ */
6
+ export declare const ContentFilterBuiltinAction: {
7
+ readonly Redact: "redact";
8
+ readonly Block: "block";
9
+ readonly Flag: "flag";
10
+ };
11
+ /**
12
+ * Action taken when the builtin filter triggers
13
+ */
14
+ export type ContentFilterBuiltinAction = OpenEnum<typeof ContentFilterBuiltinAction>;
15
+ /** @internal */
16
+ export declare const ContentFilterBuiltinAction$inboundSchema: z.ZodType<ContentFilterBuiltinAction, unknown>;
17
+ /** @internal */
18
+ export declare const ContentFilterBuiltinAction$outboundSchema: z.ZodType<string, ContentFilterBuiltinAction>;
19
+ //# sourceMappingURL=contentfilterbuiltinaction.d.ts.map
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: 63b25bbc8dbf
4
+ */
5
+ import * as openEnums from "../types/enums.js";
6
+ /**
7
+ * Action taken when the builtin filter triggers
8
+ */
9
+ export const ContentFilterBuiltinAction = {
10
+ Redact: "redact",
11
+ Block: "block",
12
+ Flag: "flag",
13
+ };
14
+ /** @internal */
15
+ export const ContentFilterBuiltinAction$inboundSchema = openEnums.inboundSchema(ContentFilterBuiltinAction);
16
+ /** @internal */
17
+ export const ContentFilterBuiltinAction$outboundSchema = openEnums.outboundSchema(ContentFilterBuiltinAction);
18
+ //# sourceMappingURL=contentfilterbuiltinaction.js.map
@@ -0,0 +1,35 @@
1
+ import * as z from "zod/v4";
2
+ import { Result as SafeParseResult } from "../types/fp.js";
3
+ import { ContentFilterBuiltinAction } from "./contentfilterbuiltinaction.js";
4
+ import { ContentFilterBuiltinSlug } from "./contentfilterbuiltinslug.js";
5
+ import { SDKValidationError } from "./errors/sdkvalidationerror.js";
6
+ /**
7
+ * A builtin content filter entry. Builtin filters include PII detectors and the regex-based prompt injection detector.
8
+ */
9
+ export type ContentFilterBuiltinEntry = {
10
+ /**
11
+ * Action taken when the builtin filter triggers
12
+ */
13
+ action: ContentFilterBuiltinAction;
14
+ /**
15
+ * Optional label used in redaction placeholders (e.g. "[PROMPT_INJECTION]")
16
+ */
17
+ label?: string | undefined;
18
+ /**
19
+ * The builtin filter identifier
20
+ */
21
+ slug: ContentFilterBuiltinSlug;
22
+ };
23
+ /** @internal */
24
+ export declare const ContentFilterBuiltinEntry$inboundSchema: z.ZodType<ContentFilterBuiltinEntry, unknown>;
25
+ /** @internal */
26
+ export type ContentFilterBuiltinEntry$Outbound = {
27
+ action: string;
28
+ label?: string | undefined;
29
+ slug: string;
30
+ };
31
+ /** @internal */
32
+ export declare const ContentFilterBuiltinEntry$outboundSchema: z.ZodType<ContentFilterBuiltinEntry$Outbound, ContentFilterBuiltinEntry>;
33
+ export declare function contentFilterBuiltinEntryToJSON(contentFilterBuiltinEntry: ContentFilterBuiltinEntry): string;
34
+ export declare function contentFilterBuiltinEntryFromJSON(jsonString: string): SafeParseResult<ContentFilterBuiltinEntry, SDKValidationError>;
35
+ //# sourceMappingURL=contentfilterbuiltinentry.d.ts.map
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: a4c9b1effbc1
4
+ */
5
+ import * as z from "zod/v4";
6
+ import { safeParse } from "../lib/schemas.js";
7
+ import { ContentFilterBuiltinAction$inboundSchema, ContentFilterBuiltinAction$outboundSchema, } from "./contentfilterbuiltinaction.js";
8
+ import { ContentFilterBuiltinSlug$inboundSchema, ContentFilterBuiltinSlug$outboundSchema, } from "./contentfilterbuiltinslug.js";
9
+ /** @internal */
10
+ export const ContentFilterBuiltinEntry$inboundSchema = z.object({
11
+ action: ContentFilterBuiltinAction$inboundSchema,
12
+ label: z.string().optional(),
13
+ slug: ContentFilterBuiltinSlug$inboundSchema,
14
+ });
15
+ /** @internal */
16
+ export const ContentFilterBuiltinEntry$outboundSchema = z.object({
17
+ action: ContentFilterBuiltinAction$outboundSchema,
18
+ label: z.string().optional(),
19
+ slug: ContentFilterBuiltinSlug$outboundSchema,
20
+ });
21
+ export function contentFilterBuiltinEntryToJSON(contentFilterBuiltinEntry) {
22
+ return JSON.stringify(ContentFilterBuiltinEntry$outboundSchema.parse(contentFilterBuiltinEntry));
23
+ }
24
+ export function contentFilterBuiltinEntryFromJSON(jsonString) {
25
+ return safeParse(jsonString, (x) => ContentFilterBuiltinEntry$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ContentFilterBuiltinEntry' from JSON`);
26
+ }
27
+ //# sourceMappingURL=contentfilterbuiltinentry.js.map
@@ -0,0 +1,24 @@
1
+ import * as z from "zod/v4";
2
+ import { OpenEnum } from "../types/enums.js";
3
+ /**
4
+ * The builtin filter identifier
5
+ */
6
+ export declare const ContentFilterBuiltinSlug: {
7
+ readonly Email: "email";
8
+ readonly Phone: "phone";
9
+ readonly Ssn: "ssn";
10
+ readonly CreditCard: "credit-card";
11
+ readonly IpAddress: "ip-address";
12
+ readonly PersonName: "person-name";
13
+ readonly Address: "address";
14
+ readonly RegexPromptInjection: "regex-prompt-injection";
15
+ };
16
+ /**
17
+ * The builtin filter identifier
18
+ */
19
+ export type ContentFilterBuiltinSlug = OpenEnum<typeof ContentFilterBuiltinSlug>;
20
+ /** @internal */
21
+ export declare const ContentFilterBuiltinSlug$inboundSchema: z.ZodType<ContentFilterBuiltinSlug, unknown>;
22
+ /** @internal */
23
+ export declare const ContentFilterBuiltinSlug$outboundSchema: z.ZodType<string, ContentFilterBuiltinSlug>;
24
+ //# sourceMappingURL=contentfilterbuiltinslug.d.ts.map
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: 9a8b76e05740
4
+ */
5
+ import * as openEnums from "../types/enums.js";
6
+ /**
7
+ * The builtin filter identifier
8
+ */
9
+ export const ContentFilterBuiltinSlug = {
10
+ Email: "email",
11
+ Phone: "phone",
12
+ Ssn: "ssn",
13
+ CreditCard: "credit-card",
14
+ IpAddress: "ip-address",
15
+ PersonName: "person-name",
16
+ Address: "address",
17
+ RegexPromptInjection: "regex-prompt-injection",
18
+ };
19
+ /** @internal */
20
+ export const ContentFilterBuiltinSlug$inboundSchema = openEnums.inboundSchema(ContentFilterBuiltinSlug);
21
+ /** @internal */
22
+ export const ContentFilterBuiltinSlug$outboundSchema = openEnums.outboundSchema(ContentFilterBuiltinSlug);
23
+ //# sourceMappingURL=contentfilterbuiltinslug.js.map
@@ -0,0 +1,34 @@
1
+ import * as z from "zod/v4";
2
+ import { Result as SafeParseResult } from "../types/fp.js";
3
+ import { ContentFilterAction } from "./contentfilteraction.js";
4
+ import { SDKValidationError } from "./errors/sdkvalidationerror.js";
5
+ /**
6
+ * A custom regex content filter that scans request messages for matching patterns.
7
+ */
8
+ export type ContentFilterEntry = {
9
+ /**
10
+ * Action taken when the pattern matches
11
+ */
12
+ action: ContentFilterAction;
13
+ /**
14
+ * Optional label used in redaction placeholders or error messages
15
+ */
16
+ label?: string | null | undefined;
17
+ /**
18
+ * A regex pattern to match against request content
19
+ */
20
+ pattern: string;
21
+ };
22
+ /** @internal */
23
+ export declare const ContentFilterEntry$inboundSchema: z.ZodType<ContentFilterEntry, unknown>;
24
+ /** @internal */
25
+ export type ContentFilterEntry$Outbound = {
26
+ action: string;
27
+ label?: string | null | undefined;
28
+ pattern: string;
29
+ };
30
+ /** @internal */
31
+ export declare const ContentFilterEntry$outboundSchema: z.ZodType<ContentFilterEntry$Outbound, ContentFilterEntry>;
32
+ export declare function contentFilterEntryToJSON(contentFilterEntry: ContentFilterEntry): string;
33
+ export declare function contentFilterEntryFromJSON(jsonString: string): SafeParseResult<ContentFilterEntry, SDKValidationError>;
34
+ //# sourceMappingURL=contentfilterentry.d.ts.map
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ * @generated-id: 309efd3ad069
4
+ */
5
+ import * as z from "zod/v4";
6
+ import { safeParse } from "../lib/schemas.js";
7
+ import { ContentFilterAction$inboundSchema, ContentFilterAction$outboundSchema, } from "./contentfilteraction.js";
8
+ /** @internal */
9
+ export const ContentFilterEntry$inboundSchema = z.object({
10
+ action: ContentFilterAction$inboundSchema,
11
+ label: z.nullable(z.string()).optional(),
12
+ pattern: z.string(),
13
+ });
14
+ /** @internal */
15
+ export const ContentFilterEntry$outboundSchema = z.object({
16
+ action: ContentFilterAction$outboundSchema,
17
+ label: z.nullable(z.string()).optional(),
18
+ pattern: z.string(),
19
+ });
20
+ export function contentFilterEntryToJSON(contentFilterEntry) {
21
+ return JSON.stringify(ContentFilterEntry$outboundSchema.parse(contentFilterEntry));
22
+ }
23
+ export function contentFilterEntryFromJSON(jsonString) {
24
+ return safeParse(jsonString, (x) => ContentFilterEntry$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'ContentFilterEntry' from JSON`);
25
+ }
26
+ //# sourceMappingURL=contentfilterentry.js.map
@@ -1,4 +1,6 @@
1
1
  import * as z from "zod/v4";
2
+ import { ContentFilterBuiltinEntry, ContentFilterBuiltinEntry$Outbound } from "./contentfilterbuiltinentry.js";
3
+ import { ContentFilterEntry, ContentFilterEntry$Outbound } from "./contentfilterentry.js";
2
4
  import { GuardrailInterval } from "./guardrailinterval.js";
3
5
  export type CreateGuardrailRequest = {
4
6
  /**
@@ -9,6 +11,14 @@ export type CreateGuardrailRequest = {
9
11
  * List of allowed provider IDs
10
12
  */
11
13
  allowedProviders?: Array<string> | null | undefined;
14
+ /**
15
+ * Builtin content filters to apply. Use slug "regex-prompt-injection" with action "block", "flag", or "redact" to enable heuristic prompt injection detection.
16
+ */
17
+ contentFilterBuiltins?: Array<ContentFilterBuiltinEntry> | null | undefined;
18
+ /**
19
+ * Custom regex content filters to apply to request messages
20
+ */
21
+ contentFilters?: Array<ContentFilterEntry> | null | undefined;
12
22
  /**
13
23
  * Description of the guardrail
14
24
  */
@@ -46,6 +56,8 @@ export type CreateGuardrailRequest = {
46
56
  export type CreateGuardrailRequest$Outbound = {
47
57
  allowed_models?: Array<string> | null | undefined;
48
58
  allowed_providers?: Array<string> | null | undefined;
59
+ content_filter_builtins?: Array<ContentFilterBuiltinEntry$Outbound> | null | undefined;
60
+ content_filters?: Array<ContentFilterEntry$Outbound> | null | undefined;
49
61
  description?: string | null | undefined;
50
62
  enforce_zdr?: boolean | null | undefined;
51
63
  ignored_models?: Array<string> | null | undefined;
@@ -4,11 +4,16 @@
4
4
  */
5
5
  import * as z from "zod/v4";
6
6
  import { remap as remap$ } from "../lib/primitives.js";
7
+ import { ContentFilterBuiltinEntry$outboundSchema, } from "./contentfilterbuiltinentry.js";
8
+ import { ContentFilterEntry$outboundSchema, } from "./contentfilterentry.js";
7
9
  import { GuardrailInterval$outboundSchema, } from "./guardrailinterval.js";
8
10
  /** @internal */
9
11
  export const CreateGuardrailRequest$outboundSchema = z.object({
10
12
  allowedModels: z.nullable(z.array(z.string())).optional(),
11
13
  allowedProviders: z.nullable(z.array(z.string())).optional(),
14
+ contentFilterBuiltins: z.nullable(z.array(ContentFilterBuiltinEntry$outboundSchema)).optional(),
15
+ contentFilters: z.nullable(z.array(ContentFilterEntry$outboundSchema))
16
+ .optional(),
12
17
  description: z.nullable(z.string()).optional(),
13
18
  enforceZdr: z.nullable(z.boolean()).optional(),
14
19
  ignoredModels: z.nullable(z.array(z.string())).optional(),
@@ -21,6 +26,8 @@ export const CreateGuardrailRequest$outboundSchema = z.object({
21
26
  return remap$(v, {
22
27
  allowedModels: "allowed_models",
23
28
  allowedProviders: "allowed_providers",
29
+ contentFilterBuiltins: "content_filter_builtins",
30
+ contentFilters: "content_filters",
24
31
  enforceZdr: "enforce_zdr",
25
32
  ignoredModels: "ignored_models",
26
33
  ignoredProviders: "ignored_providers",
@@ -1,5 +1,7 @@
1
1
  import * as z from "zod/v4";
2
2
  import { Result as SafeParseResult } from "../types/fp.js";
3
+ import { ContentFilterBuiltinEntry } from "./contentfilterbuiltinentry.js";
4
+ import { ContentFilterEntry } from "./contentfilterentry.js";
3
5
  import { SDKValidationError } from "./errors/sdkvalidationerror.js";
4
6
  import { GuardrailInterval } from "./guardrailinterval.js";
5
7
  export type Guardrail = {
@@ -11,6 +13,14 @@ export type Guardrail = {
11
13
  * List of allowed provider IDs
12
14
  */
13
15
  allowedProviders?: Array<string> | null | undefined;
16
+ /**
17
+ * Builtin content filters applied to requests. Includes PII detectors and the regex-based prompt injection detector.
18
+ */
19
+ contentFilterBuiltins?: Array<ContentFilterBuiltinEntry> | null | undefined;
20
+ /**
21
+ * Custom regex content filters applied to request messages
22
+ */
23
+ contentFilters?: Array<ContentFilterEntry> | null | undefined;
14
24
  /**
15
25
  * ISO 8601 timestamp of when the guardrail was created
16
26
  */
@@ -5,11 +5,16 @@
5
5
  import * as z from "zod/v4";
6
6
  import { remap as remap$ } from "../lib/primitives.js";
7
7
  import { safeParse } from "../lib/schemas.js";
8
+ import { ContentFilterBuiltinEntry$inboundSchema, } from "./contentfilterbuiltinentry.js";
9
+ import { ContentFilterEntry$inboundSchema, } from "./contentfilterentry.js";
8
10
  import { GuardrailInterval$inboundSchema, } from "./guardrailinterval.js";
9
11
  /** @internal */
10
12
  export const Guardrail$inboundSchema = z.object({
11
13
  allowed_models: z.nullable(z.array(z.string())).optional(),
12
14
  allowed_providers: z.nullable(z.array(z.string())).optional(),
15
+ content_filter_builtins: z.nullable(z.array(ContentFilterBuiltinEntry$inboundSchema)).optional(),
16
+ content_filters: z.nullable(z.array(ContentFilterEntry$inboundSchema))
17
+ .optional(),
13
18
  created_at: z.string(),
14
19
  description: z.nullable(z.string()).optional(),
15
20
  enforce_zdr: z.nullable(z.boolean()).optional(),
@@ -25,6 +30,8 @@ export const Guardrail$inboundSchema = z.object({
25
30
  return remap$(v, {
26
31
  "allowed_models": "allowedModels",
27
32
  "allowed_providers": "allowedProviders",
33
+ "content_filter_builtins": "contentFilterBuiltins",
34
+ "content_filters": "contentFilters",
28
35
  "created_at": "createdAt",
29
36
  "enforce_zdr": "enforceZdr",
30
37
  "ignored_models": "ignoredModels",
@@ -68,6 +68,11 @@ export * from "./codexlocalshelltool.js";
68
68
  export * from "./compoundfilter.js";
69
69
  export * from "./computeruseservertool.js";
70
70
  export * from "./conflictresponseerrordata.js";
71
+ export * from "./contentfilteraction.js";
72
+ export * from "./contentfilterbuiltinaction.js";
73
+ export * from "./contentfilterbuiltinentry.js";
74
+ export * from "./contentfilterbuiltinslug.js";
75
+ export * from "./contentfilterentry.js";
71
76
  export * from "./contentpartaddedevent.js";
72
77
  export * from "./contentpartdoneevent.js";
73
78
  export * from "./contentpartimage.js";
@@ -72,6 +72,11 @@ export * from "./codexlocalshelltool.js";
72
72
  export * from "./compoundfilter.js";
73
73
  export * from "./computeruseservertool.js";
74
74
  export * from "./conflictresponseerrordata.js";
75
+ export * from "./contentfilteraction.js";
76
+ export * from "./contentfilterbuiltinaction.js";
77
+ export * from "./contentfilterbuiltinentry.js";
78
+ export * from "./contentfilterbuiltinslug.js";
79
+ export * from "./contentfilterentry.js";
75
80
  export * from "./contentpartaddedevent.js";
76
81
  export * from "./contentpartdoneevent.js";
77
82
  export * from "./contentpartimage.js";
@@ -1,4 +1,6 @@
1
1
  import * as z from "zod/v4";
2
+ import { ContentFilterBuiltinEntry, ContentFilterBuiltinEntry$Outbound } from "./contentfilterbuiltinentry.js";
3
+ import { ContentFilterEntry, ContentFilterEntry$Outbound } from "./contentfilterentry.js";
2
4
  import { GuardrailInterval } from "./guardrailinterval.js";
3
5
  export type UpdateGuardrailRequest = {
4
6
  /**
@@ -9,6 +11,14 @@ export type UpdateGuardrailRequest = {
9
11
  * New list of allowed provider IDs
10
12
  */
11
13
  allowedProviders?: Array<string> | null | undefined;
14
+ /**
15
+ * Builtin content filters to apply. Set to null to remove. Use slug "regex-prompt-injection" with action "block", "flag", or "redact" to enable heuristic prompt injection detection.
16
+ */
17
+ contentFilterBuiltins?: Array<ContentFilterBuiltinEntry> | null | undefined;
18
+ /**
19
+ * Custom regex content filters to apply. Set to null to remove.
20
+ */
21
+ contentFilters?: Array<ContentFilterEntry> | null | undefined;
12
22
  /**
13
23
  * New description for the guardrail
14
24
  */
@@ -42,6 +52,8 @@ export type UpdateGuardrailRequest = {
42
52
  export type UpdateGuardrailRequest$Outbound = {
43
53
  allowed_models?: Array<string> | null | undefined;
44
54
  allowed_providers?: Array<string> | null | undefined;
55
+ content_filter_builtins?: Array<ContentFilterBuiltinEntry$Outbound> | null | undefined;
56
+ content_filters?: Array<ContentFilterEntry$Outbound> | null | undefined;
45
57
  description?: string | null | undefined;
46
58
  enforce_zdr?: boolean | null | undefined;
47
59
  ignored_models?: Array<string> | null | undefined;
@@ -4,11 +4,16 @@
4
4
  */
5
5
  import * as z from "zod/v4";
6
6
  import { remap as remap$ } from "../lib/primitives.js";
7
+ import { ContentFilterBuiltinEntry$outboundSchema, } from "./contentfilterbuiltinentry.js";
8
+ import { ContentFilterEntry$outboundSchema, } from "./contentfilterentry.js";
7
9
  import { GuardrailInterval$outboundSchema, } from "./guardrailinterval.js";
8
10
  /** @internal */
9
11
  export const UpdateGuardrailRequest$outboundSchema = z.object({
10
12
  allowedModels: z.nullable(z.array(z.string())).optional(),
11
13
  allowedProviders: z.nullable(z.array(z.string())).optional(),
14
+ contentFilterBuiltins: z.nullable(z.array(ContentFilterBuiltinEntry$outboundSchema)).optional(),
15
+ contentFilters: z.nullable(z.array(ContentFilterEntry$outboundSchema))
16
+ .optional(),
12
17
  description: z.nullable(z.string()).optional(),
13
18
  enforceZdr: z.nullable(z.boolean()).optional(),
14
19
  ignoredModels: z.nullable(z.array(z.string())).optional(),
@@ -20,6 +25,8 @@ export const UpdateGuardrailRequest$outboundSchema = z.object({
20
25
  return remap$(v, {
21
26
  allowedModels: "allowed_models",
22
27
  allowedProviders: "allowed_providers",
28
+ contentFilterBuiltins: "content_filter_builtins",
29
+ contentFilters: "content_filters",
23
30
  enforceZdr: "enforce_zdr",
24
31
  ignoredModels: "ignored_models",
25
32
  ignoredProviders: "ignored_providers",
package/jsr.json CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  {
4
4
  "name": "@openrouter/sdk",
5
- "version": "0.12.33",
5
+ "version": "0.12.34",
6
6
  "exports": {
7
7
  ".": "./src/index.ts",
8
8
  "./models/errors": "./src/models/errors/index.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrouter/sdk",
3
- "version": "0.12.33",
3
+ "version": "0.12.34",
4
4
  "author": "OpenRouter",
5
5
  "description": "The OpenRouter TypeScript SDK is a type-safe toolkit for building AI applications with access to 300+ language models through a unified API.",
6
6
  "keywords": [
@@ -69,13 +69,13 @@
69
69
  "lint": "eslint --cache --max-warnings=0 src",
70
70
  "build": "tsc",
71
71
  "prepublishOnly": "npm run build",
72
- "prepare": "npm run build",
73
- "test:e2e": "vitest --run --project e2e",
74
- "test:watch": "vitest --watch --project unit",
75
- "compile": "tsc",
76
72
  "postinstall": "node scripts/check-types.js || true",
77
73
  "test": "vitest --run --project unit",
74
+ "test:e2e": "vitest --run --project e2e",
75
+ "compile": "tsc",
76
+ "prepare": "npm run build",
78
77
  "test:transit": "exit 0",
78
+ "test:watch": "vitest --watch --project unit",
79
79
  "typecheck": "tsc --noEmit",
80
80
  "typecheck:transit": "exit 0"
81
81
  },