Release SDK v1.0.3 (#4277)

This commit is contained in:
Stanislav Novosad
2025-12-12 09:10:50 -07:00
committed by GitHub
parent 401af044b4
commit 30bb5a8c71
51 changed files with 123 additions and 3151 deletions

View File

@@ -56,7 +56,7 @@ following namespace:
```typescript
import { Skyvern } from "@skyvern/client";
const request: Skyvern.GetFoldersV1FoldersGetRequest = {
const request: Skyvern.RunTaskRequest = {
...
};
```

View File

@@ -1,12 +1,12 @@
{
"name": "@skyvern/client",
"version": "1.0.2",
"version": "1.0.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@skyvern/client",
"version": "1.0.2",
"version": "1.0.3",
"dependencies": {
"playwright": "^1.48.0"
},
@@ -1589,9 +1589,9 @@
}
},
"node_modules/baseline-browser-mapping": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz",
"integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
"version": "2.9.6",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz",
"integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -1860,9 +1860,9 @@
"license": "MIT"
},
"node_modules/enhanced-resolve": {
"version": "5.18.3",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
"version": "5.18.4",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz",
"integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2794,9 +2794,9 @@
}
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.15",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz",
"integrity": "sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==",
"version": "5.3.16",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3076,9 +3076,9 @@
}
},
"node_modules/vite-node/node_modules/@types/node": {
"version": "24.10.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.2.tgz",
"integrity": "sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==",
"version": "25.0.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.0.tgz",
"integrity": "sha512-rl78HwuZlaDIUSeUKkmogkhebA+8K1Hy7tddZuJ3D0xV8pZSfsYGTsliGUol1JPzu9EKnTxPC4L1fiWouStRew==",
"dev": true,
"license": "MIT",
"optional": true,

View File

@@ -1,6 +1,6 @@
{
"name": "@skyvern/client",
"version": "1.0.2",
"version": "1.0.3",
"private": false,
"repository": {
"type": "git",

View File

@@ -68,417 +68,6 @@ await client.runSdkAction({
</details>
##
## Workflows
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">getFolders</a>({ ...params }) -> Skyvern.Folder[]</code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Get all folders for the organization
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.getFolders({
page: 1,
page_size: 1,
search: "search"
});
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**request:** `Skyvern.GetFoldersV1FoldersGetRequest`
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">createFolder</a>({ ...params }) -> Skyvern.Folder</code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Create a new folder to organize workflows
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.createFolder({
title: "title"
});
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**request:** `Skyvern.FolderCreate`
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">getFolder</a>(folderId) -> Skyvern.Folder</code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Get a specific folder by ID
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.getFolder("fld_123");
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**folderId:** `string` — Folder ID
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">updateFolder</a>(folderId, { ...params }) -> Skyvern.Folder</code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Update a folder's title or description
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.updateFolder("fld_123");
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**folderId:** `string` — Folder ID
</dd>
</dl>
<dl>
<dd>
**request:** `Skyvern.FolderUpdate`
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">deleteFolder</a>(folderId, { ...params }) -> Record<string, unknown></code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Delete a folder. Optionally delete all workflows in the folder.
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.deleteFolder("fld_123", {
delete_workflows: true
});
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**folderId:** `string` — Folder ID
</dd>
</dl>
<dl>
<dd>
**request:** `Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest`
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
<details><summary><code>client.workflows.<a href="/src/api/resources/workflows/client/Client.ts">updateWorkflowFolder</a>(workflowPermanentId, { ...params }) -> Skyvern.Workflow</code></summary>
<dl>
<dd>
#### 📝 Description
<dl>
<dd>
<dl>
<dd>
Update a workflow's folder assignment for the latest version
</dd>
</dl>
</dd>
</dl>
#### 🔌 Usage
<dl>
<dd>
<dl>
<dd>
```typescript
await client.workflows.updateWorkflowFolder("wpid_123");
```
</dd>
</dl>
</dd>
</dl>
#### ⚙️ Parameters
<dl>
<dd>
<dl>
<dd>
**workflowPermanentId:** `string` — Workflow permanent ID
</dd>
</dl>
<dl>
<dd>
**request:** `Skyvern.UpdateWorkflowFolderRequest`
</dd>
</dl>
<dl>
<dd>
**requestOptions:** `Workflows.RequestOptions`
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</details>
## Scripts
<details><summary><code>client.scripts.<a href="/src/api/resources/scripts/client/Client.ts">runScript</a>(scriptId) -> unknown</code></summary>
<dl>

View File

@@ -2,7 +2,6 @@
import * as Skyvern from "./api/index.js";
import { Scripts } from "./api/resources/scripts/client/Client.js";
import { Workflows } from "./api/resources/workflows/client/Client.js";
import type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.js";
import { mergeHeaders, mergeOnlyDefinedHeaders } from "./core/headers.js";
import * as core from "./core/index.js";
@@ -17,7 +16,6 @@ export declare namespace SkyvernClient {
export class SkyvernClient {
protected readonly _options: SkyvernClient.Options;
protected _workflows: Workflows | undefined;
protected _scripts: Scripts | undefined;
constructor(_options: SkyvernClient.Options = {}) {
@@ -28,8 +26,8 @@ export class SkyvernClient {
"x-api-key": _options?.apiKey,
"X-Fern-Language": "JavaScript",
"X-Fern-SDK-Name": "@skyvern/client",
"X-Fern-SDK-Version": "1.0.2",
"User-Agent": "@skyvern/client/1.0.2",
"X-Fern-SDK-Version": "1.0.3",
"User-Agent": "@skyvern/client/1.0.3",
"X-Fern-Runtime": core.RUNTIME.type,
"X-Fern-Runtime-Version": core.RUNTIME.version,
},
@@ -38,10 +36,6 @@ export class SkyvernClient {
};
}
public get workflows(): Workflows {
return (this._workflows ??= new Workflows(this._options));
}
public get scripts(): Scripts {
return (this._scripts ??= new Scripts(this._options));
}

View File

@@ -27,5 +27,8 @@ export namespace CreateCredentialRequest {
/**
* The credential data to store
*/
export type Credential = Skyvern.NonEmptyPasswordCredential | Skyvern.NonEmptyCreditCardCredential;
export type Credential =
| Skyvern.NonEmptyPasswordCredential
| Skyvern.NonEmptyCreditCardCredential
| Skyvern.SecretCredential;
}

View File

@@ -1,3 +1 @@
export * as scripts from "./scripts/index.js";
export * from "./workflows/client/requests/index.js";
export * as workflows from "./workflows/index.js";

View File

@@ -1,540 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js";
import { mergeHeaders, mergeOnlyDefinedHeaders } from "../../../../core/headers.js";
import * as core from "../../../../core/index.js";
import * as environments from "../../../../environments.js";
import * as errors from "../../../../errors/index.js";
import * as Skyvern from "../../../index.js";
export declare namespace Workflows {
export interface Options extends BaseClientOptions {}
export interface RequestOptions extends BaseRequestOptions {}
}
export class Workflows {
protected readonly _options: Workflows.Options;
constructor(_options: Workflows.Options = {}) {
this._options = _options;
}
/**
* Get all folders for the organization
*
* @param {Skyvern.GetFoldersV1FoldersGetRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.getFolders({
* page: 1,
* page_size: 1,
* search: "search"
* })
*/
public getFolders(
request: Skyvern.GetFoldersV1FoldersGetRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder[]> {
return core.HttpResponsePromise.fromPromise(this.__getFolders(request, requestOptions));
}
private async __getFolders(
request: Skyvern.GetFoldersV1FoldersGetRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder[]>> {
const { page, page_size: pageSize, search } = request;
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
if (page != null) {
_queryParams.page = page.toString();
}
if (pageSize != null) {
_queryParams.page_size = pageSize.toString();
}
if (search != null) {
_queryParams.search = search;
}
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
"v1/folders",
),
method: "GET",
headers: _headers,
queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder[], rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling GET /v1/folders.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Create a new folder to organize workflows
*
* @param {Skyvern.FolderCreate} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.BadRequestError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.createFolder({
* title: "title"
* })
*/
public createFolder(
request: Skyvern.FolderCreate,
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__createFolder(request, requestOptions));
}
private async __createFolder(
request: Skyvern.FolderCreate,
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
"v1/folders",
),
method: "POST",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 400:
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling POST /v1/folders.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Get a specific folder by ID
*
* @param {string} folderId - Folder ID
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.getFolder("fld_123")
*/
public getFolder(
folderId: string,
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__getFolder(folderId, requestOptions));
}
private async __getFolder(
folderId: string,
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "GET",
headers: _headers,
queryParameters: requestOptions?.queryParams,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling GET /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Update a folder's title or description
*
* @param {string} folderId - Folder ID
* @param {Skyvern.FolderUpdate} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.updateFolder("fld_123")
*/
public updateFolder(
folderId: string,
request: Skyvern.FolderUpdate = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__updateFolder(folderId, request, requestOptions));
}
private async __updateFolder(
folderId: string,
request: Skyvern.FolderUpdate = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "PUT",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling PUT /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Delete a folder. Optionally delete all workflows in the folder.
*
* @param {string} folderId - Folder ID
* @param {Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.deleteFolder("fld_123", {
* delete_workflows: true
* })
*/
public deleteFolder(
folderId: string,
request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Record<string, unknown>> {
return core.HttpResponsePromise.fromPromise(this.__deleteFolder(folderId, request, requestOptions));
}
private async __deleteFolder(
folderId: string,
request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Record<string, unknown>>> {
const { delete_workflows: deleteWorkflows } = request;
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
if (deleteWorkflows != null) {
_queryParams.delete_workflows = deleteWorkflows.toString();
}
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "DELETE",
headers: _headers,
queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Record<string, unknown>, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling DELETE /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Update a workflow's folder assignment for the latest version
*
* @param {string} workflowPermanentId - Workflow permanent ID
* @param {Skyvern.UpdateWorkflowFolderRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.BadRequestError}
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.updateWorkflowFolder("wpid_123")
*/
public updateWorkflowFolder(
workflowPermanentId: string,
request: Skyvern.UpdateWorkflowFolderRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Workflow> {
return core.HttpResponsePromise.fromPromise(
this.__updateWorkflowFolder(workflowPermanentId, request, requestOptions),
);
}
private async __updateWorkflowFolder(
workflowPermanentId: string,
request: Skyvern.UpdateWorkflowFolderRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Workflow>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/workflows/${core.url.encodePathParam(workflowPermanentId)}/folder`,
),
method: "PUT",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Workflow, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 400:
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError(
"Timeout exceeded when calling PUT /v1/workflows/{workflow_permanent_id}/folder.",
);
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
}

View File

@@ -1 +0,0 @@
export * from "./requests/index.js";

View File

@@ -1,12 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* delete_workflows: true
* }
*/
export interface DeleteFolderV1FoldersFolderIdDeleteRequest {
/** If true, also delete all workflows in this folder */
delete_workflows?: boolean;
}

View File

@@ -1,14 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* title: "title"
* }
*/
export interface FolderCreate {
/** Folder title */
title: string;
/** Folder description */
description?: string;
}

View File

@@ -1,12 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {}
*/
export interface FolderUpdate {
/** Folder title */
title?: string;
/** Folder description */
description?: string;
}

View File

@@ -1,18 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* page: 1,
* page_size: 1,
* search: "search"
* }
*/
export interface GetFoldersV1FoldersGetRequest {
/** Page number */
page?: number;
/** Number of folders per page */
page_size?: number;
/** Search folders by title or description */
search?: string;
}

View File

@@ -1,10 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {}
*/
export interface UpdateWorkflowFolderRequest {
/** Folder ID to assign workflow to. Set to null to remove from folder. */
folder_id?: string;
}

View File

@@ -1,5 +0,0 @@
export type { DeleteFolderV1FoldersFolderIdDeleteRequest } from "./DeleteFolderV1FoldersFolderIdDeleteRequest.js";
export type { FolderCreate } from "./FolderCreate.js";
export type { FolderUpdate } from "./FolderUpdate.js";
export type { GetFoldersV1FoldersGetRequest } from "./GetFoldersV1FoldersGetRequest.js";
export type { UpdateWorkflowFolderRequest } from "./UpdateWorkflowFolderRequest.js";

View File

@@ -1 +0,0 @@
export * from "./client/index.js";

View File

@@ -8,6 +8,7 @@ export const ActionType = {
SelectOption: "select_option",
Checkbox: "checkbox",
Wait: "wait",
Hover: "hover",
NullAction: "null_action",
SolveCaptcha: "solve_captcha",
Terminate: "terminate",

View File

@@ -20,5 +20,8 @@ export namespace CredentialResponse {
/**
* The credential data
*/
export type Credential = Skyvern.PasswordCredentialResponse | Skyvern.CreditCardCredentialResponse;
export type Credential =
| Skyvern.PasswordCredentialResponse
| Skyvern.CreditCardCredentialResponse
| Skyvern.SecretCredentialResponse;
}

View File

@@ -4,5 +4,6 @@
export const CredentialTypeOutput = {
Password: "password",
CreditCard: "credit_card",
Secret: "secret",
} as const;
export type CredentialTypeOutput = (typeof CredentialTypeOutput)[keyof typeof CredentialTypeOutput];

View File

@@ -1,17 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Response model for a folder
*/
export interface Folder {
/** Folder title */
title: string;
/** Folder description */
description?: string;
folder_id: string;
organization_id: string;
/** Number of workflows in this folder */
workflow_count?: number;
created_at: string;
modified_at: string;
}

View File

@@ -16,6 +16,7 @@ export interface HttpRequestBlock {
url?: string;
headers?: Record<string, string | undefined>;
body?: Record<string, unknown>;
files?: Record<string, string | undefined>;
timeout?: number;
follow_redirects?: boolean;
parameters?: Skyvern.HttpRequestBlockParametersItem[];

View File

@@ -12,6 +12,7 @@ export interface HttpRequestBlockYaml {
url?: string;
headers?: Record<string, string | undefined>;
body?: Record<string, unknown>;
files?: Record<string, string | undefined>;
timeout?: number;
follow_redirects?: boolean;
parameter_keys?: string[];

View File

@@ -0,0 +1,11 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Generic secret credential.
*/
export interface SecretCredential {
/** The secret value */
secret_value: string;
/** Optional label describing the secret */
secret_label?: string;
}

View File

@@ -0,0 +1,9 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Response model for secret credentials.
*/
export interface SecretCredentialResponse {
/** Optional label for the stored secret */
secret_label?: string;
}

View File

@@ -4,6 +4,7 @@
export const SkyvernForgeSdkSchemasCredentialsCredentialType = {
Password: "password",
CreditCard: "credit_card",
Secret: "secret",
} as const;
export type SkyvernForgeSdkSchemasCredentialsCredentialType =
(typeof SkyvernForgeSdkSchemasCredentialsCredentialType)[keyof typeof SkyvernForgeSdkSchemasCredentialsCredentialType];

View File

@@ -59,7 +59,6 @@ export * from "./FileStorageType.js";
export * from "./FileType.js";
export * from "./FileUploadBlock.js";
export * from "./FileUploadBlockYaml.js";
export * from "./Folder.js";
export * from "./ForLoopBlock.js";
export * from "./ForLoopBlockLoopBlocksItem.js";
export * from "./ForLoopBlockLoopOver.js";
@@ -104,6 +103,8 @@ export * from "./RunStatus.js";
export * from "./Script.js";
export * from "./ScriptFileCreate.js";
export * from "./ScriptRunResponse.js";
export * from "./SecretCredential.js";
export * from "./SecretCredentialResponse.js";
export * from "./SelectOption.js";
export * from "./SelectOptionAction.js";
export * from "./SendEmailBlock.js";

View File

@@ -1 +1 @@
export const SDK_VERSION = "1.0.2";
export const SDK_VERSION = "1.0.3";

View File

@@ -1,517 +0,0 @@
// This file was auto-generated by Fern from our API Definition.
import * as Skyvern from "../../src/api/index";
import { SkyvernClient } from "../../src/Client";
import { mockServerPool } from "../mock-server/MockServerPool";
describe("Workflows", () => {
test("getFolders (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = [
{
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
];
server.mockEndpoint().get("/v1/folders").respondWith().statusCode(200).jsonBody(rawResponseBody).build();
const response = await client.workflows.getFolders({
page: 1,
page_size: 1,
search: "search",
});
expect(response).toEqual([
{
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
]);
});
test("getFolders (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server.mockEndpoint().get("/v1/folders").respondWith().statusCode(422).jsonBody(rawResponseBody).build();
await expect(async () => {
return await client.workflows.getFolders();
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
test("createFolder (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = { title: "title" };
const rawResponseBody = {
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
};
server
.mockEndpoint()
.post("/v1/folders")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(200)
.jsonBody(rawResponseBody)
.build();
const response = await client.workflows.createFolder({
title: "title",
});
expect(response).toEqual({
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
});
});
test("createFolder (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = { title: "x" };
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.post("/v1/folders")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(400)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.createFolder({
title: "x",
});
}).rejects.toThrow(Skyvern.BadRequestError);
});
test("createFolder (3)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = { title: "x" };
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.post("/v1/folders")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(422)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.createFolder({
title: "x",
});
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
test("getFolder (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = {
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
};
server
.mockEndpoint()
.get("/v1/folders/fld_123")
.respondWith()
.statusCode(200)
.jsonBody(rawResponseBody)
.build();
const response = await client.workflows.getFolder("fld_123");
expect(response).toEqual({
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
});
});
test("getFolder (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.get("/v1/folders/folder_id")
.respondWith()
.statusCode(404)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.getFolder("folder_id");
}).rejects.toThrow(Skyvern.NotFoundError);
});
test("getFolder (3)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.get("/v1/folders/folder_id")
.respondWith()
.statusCode(422)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.getFolder("folder_id");
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
test("updateFolder (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = {
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
};
server
.mockEndpoint()
.put("/v1/folders/fld_123")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(200)
.jsonBody(rawResponseBody)
.build();
const response = await client.workflows.updateFolder("fld_123");
expect(response).toEqual({
title: "title",
description: "description",
folder_id: "folder_id",
organization_id: "organization_id",
workflow_count: 1,
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
});
});
test("updateFolder (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.put("/v1/folders/folder_id")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(404)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.updateFolder("folder_id");
}).rejects.toThrow(Skyvern.NotFoundError);
});
test("updateFolder (3)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.put("/v1/folders/folder_id")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(422)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.updateFolder("folder_id");
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
test("deleteFolder (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.delete("/v1/folders/fld_123")
.respondWith()
.statusCode(200)
.jsonBody(rawResponseBody)
.build();
const response = await client.workflows.deleteFolder("fld_123", {
delete_workflows: true,
});
expect(response).toEqual({
key: "value",
});
});
test("deleteFolder (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.delete("/v1/folders/folder_id")
.respondWith()
.statusCode(404)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.deleteFolder("folder_id");
}).rejects.toThrow(Skyvern.NotFoundError);
});
test("deleteFolder (3)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.delete("/v1/folders/folder_id")
.respondWith()
.statusCode(422)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.deleteFolder("folder_id");
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
test("updateWorkflowFolder (1)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = {
workflow_id: "workflow_id",
organization_id: "organization_id",
title: "title",
workflow_permanent_id: "workflow_permanent_id",
version: 1,
is_saved_task: true,
description: "description",
workflow_definition: {
version: 1,
parameters: [
{
parameter_type: "aws_secret",
key: "key",
aws_secret_parameter_id: "aws_secret_parameter_id",
workflow_id: "workflow_id",
aws_key: "aws_key",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
],
blocks: [
{
block_type: "action",
label: "label",
output_parameter: {
key: "key",
output_parameter_id: "output_parameter_id",
workflow_id: "workflow_id",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
},
],
},
proxy_location: "RESIDENTIAL",
webhook_callback_url: "webhook_callback_url",
totp_verification_url: "totp_verification_url",
totp_identifier: "totp_identifier",
persist_browser_session: true,
model: { key: "value" },
status: "published",
max_screenshot_scrolls: 1,
extra_http_headers: { key: "value" },
run_with: "run_with",
ai_fallback: true,
cache_key: "cache_key",
run_sequentially: true,
sequential_key: "sequential_key",
folder_id: "folder_id",
import_error: "import_error",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
deleted_at: "2024-01-15T09:30:00Z",
};
server
.mockEndpoint()
.put("/v1/workflows/wpid_123/folder")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(200)
.jsonBody(rawResponseBody)
.build();
const response = await client.workflows.updateWorkflowFolder("wpid_123");
expect(response).toEqual({
workflow_id: "workflow_id",
organization_id: "organization_id",
title: "title",
workflow_permanent_id: "workflow_permanent_id",
version: 1,
is_saved_task: true,
description: "description",
workflow_definition: {
version: 1,
parameters: [
{
parameter_type: "aws_secret",
key: "key",
aws_secret_parameter_id: "aws_secret_parameter_id",
workflow_id: "workflow_id",
aws_key: "aws_key",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
],
blocks: [
{
block_type: "action",
label: "label",
output_parameter: {
key: "key",
output_parameter_id: "output_parameter_id",
workflow_id: "workflow_id",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
},
},
],
},
proxy_location: "RESIDENTIAL",
webhook_callback_url: "webhook_callback_url",
totp_verification_url: "totp_verification_url",
totp_identifier: "totp_identifier",
persist_browser_session: true,
model: {
key: "value",
},
status: "published",
max_screenshot_scrolls: 1,
extra_http_headers: {
key: "value",
},
run_with: "run_with",
ai_fallback: true,
cache_key: "cache_key",
run_sequentially: true,
sequential_key: "sequential_key",
folder_id: "folder_id",
import_error: "import_error",
created_at: "2024-01-15T09:30:00Z",
modified_at: "2024-01-15T09:30:00Z",
deleted_at: "2024-01-15T09:30:00Z",
});
});
test("updateWorkflowFolder (2)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.put("/v1/workflows/workflow_permanent_id/folder")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(400)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.updateWorkflowFolder("workflow_permanent_id");
}).rejects.toThrow(Skyvern.BadRequestError);
});
test("updateWorkflowFolder (3)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.put("/v1/workflows/workflow_permanent_id/folder")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(404)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.updateWorkflowFolder("workflow_permanent_id");
}).rejects.toThrow(Skyvern.NotFoundError);
});
test("updateWorkflowFolder (4)", async () => {
const server = mockServerPool.createServer();
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
const rawRequestBody = {};
const rawResponseBody = { key: "value" };
server
.mockEndpoint()
.put("/v1/workflows/workflow_permanent_id/folder")
.jsonBody(rawRequestBody)
.respondWith()
.statusCode(422)
.jsonBody(rawResponseBody)
.build();
await expect(async () => {
return await client.workflows.updateWorkflowFolder("workflow_permanent_id");
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
});
});