Skip to content

Commit ec9fef0

Browse files
feat(mux): expose CIDR egress rules on the network policy API (#10269)
1 parent 70e6a27 commit ec9fef0

6 files changed

Lines changed: 106 additions & 3 deletions

File tree

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 119
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-0e8f05634e48dcbabeafbb1ab71297b2c506f028ffc92a1f01767147e1244a77.yml
3-
openapi_spec_hash: 46d01fb341301ea07b9860151d9043f7
4-
config_hash: 9f32651e6269089b5d6c33594b992232
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-53098c6f2c4d6e31f36a6975b3f7f504ad3f8fbe5a209dac9b2304afcd053a77.yml
3+
openapi_spec_hash: 05dcd360988cd1044b6a7ab03933a5ef
4+
config_hash: 218b8d25038e627faab98532392ee9a0

api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,10 +364,12 @@ Methods:
364364

365365
Types:
366366

367+
- <code><a href="./src/resources/network-policies.ts">AllowedCidr</a></code>
367368
- <code><a href="./src/resources/network-policies.ts">NetworkPolicyCreateParameters</a></code>
368369
- <code><a href="./src/resources/network-policies.ts">NetworkPolicyListView</a></code>
369370
- <code><a href="./src/resources/network-policies.ts">NetworkPolicyUpdateParameters</a></code>
370371
- <code><a href="./src/resources/network-policies.ts">NetworkPolicyView</a></code>
372+
- <code><a href="./src/resources/network-policies.ts">PortRule</a></code>
371373

372374
Methods:
373375

src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ import {
124124
McpConfigs,
125125
} from './resources/mcp-configs';
126126
import {
127+
AllowedCidr,
127128
NetworkPolicies,
128129
NetworkPolicyCreateParameters,
129130
NetworkPolicyCreateParams,
@@ -134,6 +135,7 @@ import {
134135
NetworkPolicyUpdateParams,
135136
NetworkPolicyView,
136137
NetworkPolicyViewsNetworkPoliciesCursorIDPage,
138+
PortRule,
137139
} from './resources/network-policies';
138140
import {
139141
ObjectCompleteParams,
@@ -769,10 +771,12 @@ export declare namespace Runloop {
769771

770772
export {
771773
NetworkPolicies as NetworkPolicies,
774+
type AllowedCidr as AllowedCidr,
772775
type NetworkPolicyCreateParameters as NetworkPolicyCreateParameters,
773776
type NetworkPolicyListView as NetworkPolicyListView,
774777
type NetworkPolicyUpdateParameters as NetworkPolicyUpdateParameters,
775778
type NetworkPolicyView as NetworkPolicyView,
779+
type PortRule as PortRule,
776780
NetworkPolicyViewsNetworkPoliciesCursorIDPage as NetworkPolicyViewsNetworkPoliciesCursorIDPage,
777781
type NetworkPolicyCreateParams as NetworkPolicyCreateParams,
778782
type NetworkPolicyUpdateParams as NetworkPolicyUpdateParams,

src/resources/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,12 @@ export {
147147
export {
148148
NetworkPolicyViewsNetworkPoliciesCursorIDPage,
149149
NetworkPolicies,
150+
type AllowedCidr,
150151
type NetworkPolicyCreateParameters,
151152
type NetworkPolicyListView,
152153
type NetworkPolicyUpdateParameters,
153154
type NetworkPolicyView,
155+
type PortRule,
154156
type NetworkPolicyCreateParams,
155157
type NetworkPolicyUpdateParams,
156158
type NetworkPolicyListParams,

src/resources/network-policies.ts

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import { APIResource } from '../resource';
44
import { isRequestOptions } from '../core';
55
import * as Core from '../core';
6+
import * as NetworkPoliciesAPI from './network-policies';
67
import { NetworkPoliciesCursorIDPage, type NetworkPoliciesCursorIDPageParams } from '../pagination';
78

89
export class NetworkPolicies extends APIResource {
@@ -78,6 +79,22 @@ export class NetworkPolicies extends APIResource {
7879

7980
export class NetworkPolicyViewsNetworkPoliciesCursorIDPage extends NetworkPoliciesCursorIDPage<NetworkPolicyView> {}
8081

82+
/**
83+
* A CIDR-based egress allow rule with optional port restrictions.
84+
*/
85+
export interface AllowedCidr {
86+
/**
87+
* IPv4 CIDR block in canonical form (host bits zero), e.g. '10.12.0.0/16'.
88+
*/
89+
cidr: string;
90+
91+
/**
92+
* (Optional) Ports allowed for this CIDR. Empty or omitted means all ports and
93+
* protocols.
94+
*/
95+
ports?: Array<PortRule> | null;
96+
}
97+
8198
/**
8299
* Parameters required to create a new NetworkPolicy.
83100
*/
@@ -113,6 +130,13 @@ export interface NetworkPolicyCreateParameters {
113130
*/
114131
allow_mcp_gateway?: boolean | null;
115132

133+
/**
134+
* (Optional) IPv4 CIDR-based allow list with optional port restrictions, additive
135+
* with allowed_hostnames. Example: [{'cidr': '10.12.0.0/16', 'ports': [{'port':
136+
* 443}]}].
137+
*/
138+
allowed_cidrs?: Array<AllowedCidr> | null;
139+
116140
/**
117141
* (Optional) DNS-based allow list with wildcard support. Examples: ['github.com',
118142
* '*.npmjs.org'].
@@ -169,6 +193,12 @@ export interface NetworkPolicyUpdateParameters {
169193
*/
170194
allow_mcp_gateway?: boolean | null;
171195

196+
/**
197+
* Updated IPv4 CIDR-based allow list with optional port restrictions, additive
198+
* with allowed_hostnames.
199+
*/
200+
allowed_cidrs?: Array<AllowedCidr> | null;
201+
172202
/**
173203
* Updated DNS-based allow list with wildcard support. Examples: ['github.com',
174204
* '*.npmjs.org'].
@@ -248,6 +278,12 @@ export namespace NetworkPolicyView {
248278
*/
249279
allow_mcp_gateway: boolean;
250280

281+
/**
282+
* CIDR-based allow list with optional port restrictions, additive with
283+
* allowed_hostnames.
284+
*/
285+
allowed_cidrs: Array<NetworkPoliciesAPI.AllowedCidr>;
286+
251287
/**
252288
* DNS-based allow list with wildcard support. Examples: ['github.com',
253289
* '*.npmjs.org', 'api.openai.com']. Empty list with allow_all=false means no
@@ -257,6 +293,26 @@ export namespace NetworkPolicyView {
257293
}
258294
}
259295

296+
/**
297+
* A port or port range allowed for a CIDR egress rule.
298+
*/
299+
export interface PortRule {
300+
/**
301+
* The allowed port (1-65535), or the start of a port range.
302+
*/
303+
port: number;
304+
305+
/**
306+
* (Optional) Inclusive end of the port range (port-65535). Omit for a single port.
307+
*/
308+
end_port?: number | null;
309+
310+
/**
311+
* L4 protocol for a port rule.
312+
*/
313+
protocol?: 'TCP' | 'UDP' | null;
314+
}
315+
260316
export interface NetworkPolicyCreateParams {
261317
/**
262318
* The human-readable name for the NetworkPolicy. Must be unique within the
@@ -289,6 +345,13 @@ export interface NetworkPolicyCreateParams {
289345
*/
290346
allow_mcp_gateway?: boolean | null;
291347

348+
/**
349+
* (Optional) IPv4 CIDR-based allow list with optional port restrictions, additive
350+
* with allowed_hostnames. Example: [{'cidr': '10.12.0.0/16', 'ports': [{'port':
351+
* 443}]}].
352+
*/
353+
allowed_cidrs?: Array<AllowedCidr> | null;
354+
292355
/**
293356
* (Optional) DNS-based allow list with wildcard support. Examples: ['github.com',
294357
* '*.npmjs.org'].
@@ -322,6 +385,12 @@ export interface NetworkPolicyUpdateParams {
322385
*/
323386
allow_mcp_gateway?: boolean | null;
324387

388+
/**
389+
* Updated IPv4 CIDR-based allow list with optional port restrictions, additive
390+
* with allowed_hostnames.
391+
*/
392+
allowed_cidrs?: Array<AllowedCidr> | null;
393+
325394
/**
326395
* Updated DNS-based allow list with wildcard support. Examples: ['github.com',
327396
* '*.npmjs.org'].
@@ -368,10 +437,12 @@ NetworkPolicies.NetworkPolicyViewsNetworkPoliciesCursorIDPage = NetworkPolicyVie
368437

369438
export declare namespace NetworkPolicies {
370439
export {
440+
type AllowedCidr as AllowedCidr,
371441
type NetworkPolicyCreateParameters as NetworkPolicyCreateParameters,
372442
type NetworkPolicyListView as NetworkPolicyListView,
373443
type NetworkPolicyUpdateParameters as NetworkPolicyUpdateParameters,
374444
type NetworkPolicyView as NetworkPolicyView,
445+
type PortRule as PortRule,
375446
NetworkPolicyViewsNetworkPoliciesCursorIDPage as NetworkPolicyViewsNetworkPoliciesCursorIDPage,
376447
type NetworkPolicyCreateParams as NetworkPolicyCreateParams,
377448
type NetworkPolicyUpdateParams as NetworkPolicyUpdateParams,

tests/api-resources/network-policies.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ describe('resource networkPolicies', () => {
2727
allow_all: true,
2828
allow_devbox_to_devbox: true,
2929
allow_mcp_gateway: true,
30+
allowed_cidrs: [
31+
{
32+
cidr: 'cidr',
33+
ports: [
34+
{
35+
port: 0,
36+
end_port: 0,
37+
protocol: 'TCP',
38+
},
39+
],
40+
},
41+
],
3042
allowed_hostnames: ['string'],
3143
description: 'description',
3244
});
@@ -78,6 +90,18 @@ describe('resource networkPolicies', () => {
7890
allow_all: true,
7991
allow_devbox_to_devbox: true,
8092
allow_mcp_gateway: true,
93+
allowed_cidrs: [
94+
{
95+
cidr: 'cidr',
96+
ports: [
97+
{
98+
port: 0,
99+
end_port: 0,
100+
protocol: 'TCP',
101+
},
102+
],
103+
},
104+
],
81105
allowed_hostnames: ['string'],
82106
description: 'description',
83107
name: 'name',

0 commit comments

Comments
 (0)