@@ -292,6 +292,92 @@ export class Sessions {
292292 }
293293 }
294294
295+ /**
296+ * Delete a session with all its tasks.
297+ *
298+ * @param {BrowserUse.DeleteSessionSessionsSessionIdDeleteRequest } request
299+ * @param {Sessions.RequestOptions } requestOptions - Request-specific configuration.
300+ *
301+ * @throws {@link BrowserUse.NotFoundError }
302+ * @throws {@link BrowserUse.UnprocessableEntityError }
303+ *
304+ * @example
305+ * await client.sessions.deleteSession({
306+ * session_id: "session_id"
307+ * })
308+ */
309+ public deleteSession (
310+ request : BrowserUse . DeleteSessionSessionsSessionIdDeleteRequest ,
311+ requestOptions ?: Sessions . RequestOptions ,
312+ ) : core . HttpResponsePromise < void > {
313+ return core . HttpResponsePromise . fromPromise ( this . __deleteSession ( request , requestOptions ) ) ;
314+ }
315+
316+ private async __deleteSession (
317+ request : BrowserUse . DeleteSessionSessionsSessionIdDeleteRequest ,
318+ requestOptions ?: Sessions . RequestOptions ,
319+ ) : Promise < core . WithRawResponse < void > > {
320+ const { session_id : sessionId } = request ;
321+ const _headers : core . Fetcher . Args [ "headers" ] = mergeHeaders (
322+ this . _options ?. headers ,
323+ mergeOnlyDefinedHeaders ( { ...( await this . _getCustomAuthorizationHeaders ( ) ) } ) ,
324+ requestOptions ?. headers ,
325+ ) ;
326+ const _response = await core . fetcher ( {
327+ url : core . url . join (
328+ ( await core . Supplier . get ( this . _options . baseUrl ) ) ??
329+ ( await core . Supplier . get ( this . _options . environment ) ) ??
330+ environments . BrowserUseEnvironment . Production ,
331+ `sessions/${ core . url . encodePathParam ( sessionId ) } ` ,
332+ ) ,
333+ method : "DELETE" ,
334+ headers : _headers ,
335+ queryParameters : requestOptions ?. queryParams ,
336+ timeoutMs : ( requestOptions ?. timeoutInSeconds ?? this . _options ?. timeoutInSeconds ?? 60 ) * 1000 ,
337+ maxRetries : requestOptions ?. maxRetries ?? this . _options ?. maxRetries ,
338+ abortSignal : requestOptions ?. abortSignal ,
339+ fetchFn : this . _options ?. fetch ,
340+ logging : this . _options . logging ,
341+ } ) ;
342+ if ( _response . ok ) {
343+ return { data : undefined , rawResponse : _response . rawResponse } ;
344+ }
345+
346+ if ( _response . error . reason === "status-code" ) {
347+ switch ( _response . error . statusCode ) {
348+ case 404 :
349+ throw new BrowserUse . NotFoundError ( _response . error . body as unknown , _response . rawResponse ) ;
350+ case 422 :
351+ throw new BrowserUse . UnprocessableEntityError (
352+ _response . error . body as unknown ,
353+ _response . rawResponse ,
354+ ) ;
355+ default :
356+ throw new errors . BrowserUseError ( {
357+ statusCode : _response . error . statusCode ,
358+ body : _response . error . body ,
359+ rawResponse : _response . rawResponse ,
360+ } ) ;
361+ }
362+ }
363+
364+ switch ( _response . error . reason ) {
365+ case "non-json" :
366+ throw new errors . BrowserUseError ( {
367+ statusCode : _response . error . statusCode ,
368+ body : _response . error . rawBody ,
369+ rawResponse : _response . rawResponse ,
370+ } ) ;
371+ case "timeout" :
372+ throw new errors . BrowserUseTimeoutError ( "Timeout exceeded when calling DELETE /sessions/{session_id}." ) ;
373+ case "unknown" :
374+ throw new errors . BrowserUseError ( {
375+ message : _response . error . errorMessage ,
376+ rawResponse : _response . rawResponse ,
377+ } ) ;
378+ }
379+ }
380+
295381 /**
296382 * Stop a session and all its running tasks.
297383 *
0 commit comments