Skip to content

Commit ead291b

Browse files
feat: Support hot swap proxy on a session
1 parent 24e37bb commit ead291b

File tree

7 files changed

+126
-4
lines changed

7 files changed

+126
-4
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 90
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-cc60c65c6bb0b8a8ea662cf758806e641790870ded35f6ffdb9f4801f3d29b15.yml
3-
openapi_spec_hash: a1074e1bba578bcd5912512166ada0dc
4-
config_hash: 7868d3397406c2974b6f058488aeefd6
1+
configured_endpoints: 91
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fkernel-4f5307643555b7917e8681b1966ae0b99f770cf59805e2f917ec7528edf11ba8.yml
3+
openapi_spec_hash: 873a9aa3a88b6cec1ad94f848eeb1c45
4+
config_hash: 20337f7888852c165d099faa7589c90a

api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,14 @@ Types:
6767
- <code><a href="./src/resources/browsers/browsers.ts">Profile</a></code>
6868
- <code><a href="./src/resources/browsers/browsers.ts">BrowserCreateResponse</a></code>
6969
- <code><a href="./src/resources/browsers/browsers.ts">BrowserRetrieveResponse</a></code>
70+
- <code><a href="./src/resources/browsers/browsers.ts">BrowserUpdateResponse</a></code>
7071
- <code><a href="./src/resources/browsers/browsers.ts">BrowserListResponse</a></code>
7172

7273
Methods:
7374

7475
- <code title="post /browsers">client.browsers.<a href="./src/resources/browsers/browsers.ts">create</a>({ ...params }) -> BrowserCreateResponse</code>
7576
- <code title="get /browsers/{id}">client.browsers.<a href="./src/resources/browsers/browsers.ts">retrieve</a>(id) -> BrowserRetrieveResponse</code>
77+
- <code title="patch /browsers/{id}">client.browsers.<a href="./src/resources/browsers/browsers.ts">update</a>(id, { ...params }) -> BrowserUpdateResponse</code>
7678
- <code title="get /browsers">client.browsers.<a href="./src/resources/browsers/browsers.ts">list</a>({ ...params }) -> BrowserListResponsesOffsetPagination</code>
7779
- <code title="delete /browsers">client.browsers.<a href="./src/resources/browsers/browsers.ts">delete</a>({ ...params }) -> void</code>
7880
- <code title="delete /browsers/{id}">client.browsers.<a href="./src/resources/browsers/browsers.ts">deleteByID</a>(id) -> void</code>

src/client.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ import {
9595
BrowserLoadExtensionsParams,
9696
BrowserPersistence,
9797
BrowserRetrieveResponse,
98+
BrowserUpdateParams,
99+
BrowserUpdateResponse,
98100
Browsers,
99101
Profile,
100102
} from './resources/browsers/browsers';
@@ -933,9 +935,11 @@ export declare namespace Kernel {
933935
type Profile as Profile,
934936
type BrowserCreateResponse as BrowserCreateResponse,
935937
type BrowserRetrieveResponse as BrowserRetrieveResponse,
938+
type BrowserUpdateResponse as BrowserUpdateResponse,
936939
type BrowserListResponse as BrowserListResponse,
937940
type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination,
938941
type BrowserCreateParams as BrowserCreateParams,
942+
type BrowserUpdateParams as BrowserUpdateParams,
939943
type BrowserListParams as BrowserListParams,
940944
type BrowserDeleteParams as BrowserDeleteParams,
941945
type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams,

src/resources/browsers/browsers.ts

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,20 @@ export class Browsers extends APIResource {
109109
return this._client.get(path`/browsers/${id}`, options);
110110
}
111111

112+
/**
113+
* Update a browser session.
114+
*
115+
* @example
116+
* ```ts
117+
* const browser = await client.browsers.update(
118+
* 'htzv5orfit78e1m2biiifpbv',
119+
* );
120+
* ```
121+
*/
122+
update(id: string, body: BrowserUpdateParams, options?: RequestOptions): APIPromise<BrowserUpdateResponse> {
123+
return this._client.patch(path`/browsers/${id}`, { body, ...options });
124+
}
125+
112126
/**
113127
* List all browser sessions with pagination support. Use include_deleted=true to
114128
* include soft-deleted sessions in the results.
@@ -382,6 +396,82 @@ export interface BrowserRetrieveResponse {
382396
viewport?: Shared.BrowserViewport;
383397
}
384398

399+
export interface BrowserUpdateResponse {
400+
/**
401+
* Websocket URL for Chrome DevTools Protocol connections to the browser session
402+
*/
403+
cdp_ws_url: string;
404+
405+
/**
406+
* When the browser session was created.
407+
*/
408+
created_at: string;
409+
410+
/**
411+
* Whether the browser session is running in headless mode.
412+
*/
413+
headless: boolean;
414+
415+
/**
416+
* Unique identifier for the browser session
417+
*/
418+
session_id: string;
419+
420+
/**
421+
* Whether the browser session is running in stealth mode.
422+
*/
423+
stealth: boolean;
424+
425+
/**
426+
* The number of seconds of inactivity before the browser session is terminated.
427+
*/
428+
timeout_seconds: number;
429+
430+
/**
431+
* Remote URL for live viewing the browser session. Only available for non-headless
432+
* browsers.
433+
*/
434+
browser_live_view_url?: string;
435+
436+
/**
437+
* When the browser session was soft-deleted. Only present for deleted sessions.
438+
*/
439+
deleted_at?: string;
440+
441+
/**
442+
* Whether the browser session is running in kiosk mode.
443+
*/
444+
kiosk_mode?: boolean;
445+
446+
/**
447+
* @deprecated DEPRECATED: Use timeout_seconds (up to 72 hours) and Profiles
448+
* instead.
449+
*/
450+
persistence?: BrowserPersistence;
451+
452+
/**
453+
* Browser profile metadata.
454+
*/
455+
profile?: Profile;
456+
457+
/**
458+
* ID of the proxy associated with this browser session, if any.
459+
*/
460+
proxy_id?: string;
461+
462+
/**
463+
* Initial browser window size in pixels with optional refresh rate. If omitted,
464+
* image defaults apply (1920x1080@25). Only specific viewport configurations are
465+
* supported. The server will reject unsupported combinations. Supported
466+
* resolutions are: 2560x1440@10, 1920x1080@25, 1920x1200@25, 1440x900@25,
467+
* 1024x768@60, 1200x800@60 If refresh_rate is not provided, it will be
468+
* automatically determined from the width and height if they match a supported
469+
* configuration exactly. Note: Higher resolutions may affect the responsiveness of
470+
* live view browser
471+
*/
472+
viewport?: Shared.BrowserViewport;
473+
}
474+
385475
export interface BrowserListResponse {
386476
/**
387477
* Websocket URL for Chrome DevTools Protocol connections to the browser session
@@ -528,6 +618,14 @@ export interface BrowserCreateParams {
528618
viewport?: Shared.BrowserViewport;
529619
}
530620

621+
export interface BrowserUpdateParams {
622+
/**
623+
* ID of the proxy to use. Omit to leave unchanged, set to empty string to remove
624+
* proxy.
625+
*/
626+
proxy_id?: string | null;
627+
}
628+
531629
export interface BrowserListParams extends OffsetPaginationParams {
532630
/**
533631
* When true, includes soft-deleted browser sessions in the results alongside
@@ -578,9 +676,11 @@ export declare namespace Browsers {
578676
type Profile as Profile,
579677
type BrowserCreateResponse as BrowserCreateResponse,
580678
type BrowserRetrieveResponse as BrowserRetrieveResponse,
679+
type BrowserUpdateResponse as BrowserUpdateResponse,
581680
type BrowserListResponse as BrowserListResponse,
582681
type BrowserListResponsesOffsetPagination as BrowserListResponsesOffsetPagination,
583682
type BrowserCreateParams as BrowserCreateParams,
683+
type BrowserUpdateParams as BrowserUpdateParams,
584684
type BrowserListParams as BrowserListParams,
585685
type BrowserDeleteParams as BrowserDeleteParams,
586686
type BrowserLoadExtensionsParams as BrowserLoadExtensionsParams,

src/resources/browsers/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ export {
66
type Profile,
77
type BrowserCreateResponse,
88
type BrowserRetrieveResponse,
9+
type BrowserUpdateResponse,
910
type BrowserListResponse,
1011
type BrowserCreateParams,
12+
type BrowserUpdateParams,
1113
type BrowserListParams,
1214
type BrowserDeleteParams,
1315
type BrowserLoadExtensionsParams,

src/resources/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ export {
2525
type Profile,
2626
type BrowserCreateResponse,
2727
type BrowserRetrieveResponse,
28+
type BrowserUpdateResponse,
2829
type BrowserListResponse,
2930
type BrowserCreateParams,
31+
type BrowserUpdateParams,
3032
type BrowserListParams,
3133
type BrowserDeleteParams,
3234
type BrowserLoadExtensionsParams,

tests/api-resources/browsers/browsers.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ describe('resource browsers', () => {
6262
expect(dataAndResponse.response).toBe(rawResponse);
6363
});
6464

65+
// Prism tests are disabled
66+
test.skip('update', async () => {
67+
const responsePromise = client.browsers.update('htzv5orfit78e1m2biiifpbv', {});
68+
const rawResponse = await responsePromise.asResponse();
69+
expect(rawResponse).toBeInstanceOf(Response);
70+
const response = await responsePromise;
71+
expect(response).not.toBeInstanceOf(Response);
72+
const dataAndResponse = await responsePromise.withResponse();
73+
expect(dataAndResponse.data).toBe(response);
74+
expect(dataAndResponse.response).toBe(rawResponse);
75+
});
76+
6577
// Prism tests are disabled
6678
test.skip('list', async () => {
6779
const responsePromise = client.browsers.list();

0 commit comments

Comments
 (0)