Release TS/Python SDK 2.22 (#3942)
This commit is contained in:
committed by
GitHub
parent
a9c3d692ff
commit
65a9259160
@@ -2,6 +2,7 @@
|
||||
|
||||
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";
|
||||
@@ -16,6 +17,7 @@ export declare namespace SkyvernClient {
|
||||
|
||||
export class SkyvernClient {
|
||||
protected readonly _options: SkyvernClient.Options;
|
||||
protected _workflows: Workflows | undefined;
|
||||
protected _scripts: Scripts | undefined;
|
||||
|
||||
constructor(_options: SkyvernClient.Options = {}) {
|
||||
@@ -26,8 +28,8 @@ export class SkyvernClient {
|
||||
"x-api-key": _options?.apiKey,
|
||||
"X-Fern-Language": "JavaScript",
|
||||
"X-Fern-SDK-Name": "@skyvern/client",
|
||||
"X-Fern-SDK-Version": "0.2.21",
|
||||
"User-Agent": "@skyvern/client/0.2.21",
|
||||
"X-Fern-SDK-Version": "0.2.22",
|
||||
"User-Agent": "@skyvern/client/0.2.22",
|
||||
"X-Fern-Runtime": core.RUNTIME.type,
|
||||
"X-Fern-Runtime-Version": core.RUNTIME.version,
|
||||
},
|
||||
@@ -36,6 +38,10 @@ 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));
|
||||
}
|
||||
@@ -382,8 +388,8 @@ export class SkyvernClient {
|
||||
* Get all workflows with the latest version for the organization.
|
||||
*
|
||||
* Search semantics:
|
||||
* - If `search_key` is provided, its value is used as a unified search term for both
|
||||
* `workflows.title` and workflow parameter metadata (key, description, and default_value for
|
||||
* - If `search_key` is provided, its value is used as a unified search term for
|
||||
* `workflows.title`, `folders.title`, and workflow parameter metadata (key, description, and default_value for
|
||||
* `WorkflowParameterModel`).
|
||||
* - Falls back to deprecated `title` (title-only search) if `search_key` is not provided.
|
||||
* - Parameter metadata search excludes soft-deleted parameter rows across all parameter tables.
|
||||
@@ -401,6 +407,7 @@ export class SkyvernClient {
|
||||
* only_workflows: true,
|
||||
* search_key: "search_key",
|
||||
* title: "title",
|
||||
* folder_id: "folder_id",
|
||||
* template: true
|
||||
* })
|
||||
*/
|
||||
@@ -422,6 +429,8 @@ export class SkyvernClient {
|
||||
only_workflows: onlyWorkflows,
|
||||
search_key: searchKey,
|
||||
title,
|
||||
folder_id: folderId,
|
||||
status,
|
||||
template,
|
||||
} = request;
|
||||
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
|
||||
@@ -449,6 +458,18 @@ export class SkyvernClient {
|
||||
_queryParams.title = title;
|
||||
}
|
||||
|
||||
if (folderId != null) {
|
||||
_queryParams.folder_id = folderId;
|
||||
}
|
||||
|
||||
if (status != null) {
|
||||
if (Array.isArray(status)) {
|
||||
_queryParams.status = status.map((item) => item);
|
||||
} else {
|
||||
_queryParams.status = status;
|
||||
}
|
||||
}
|
||||
|
||||
if (template != null) {
|
||||
_queryParams.template = template.toString();
|
||||
}
|
||||
@@ -2209,17 +2230,13 @@ export class SkyvernClient {
|
||||
* @param {Skyvern.RunSdkActionRequest} request
|
||||
* @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.BadRequestError}
|
||||
* @throws {@link Skyvern.ForbiddenError}
|
||||
* @throws {@link Skyvern.NotFoundError}
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.runSdkAction({
|
||||
* "x-user-agent": "x-user-agent",
|
||||
* url: "url",
|
||||
* action: {
|
||||
* type: "ai_click"
|
||||
* type: "ai_act"
|
||||
* }
|
||||
* })
|
||||
*/
|
||||
@@ -2234,13 +2251,9 @@ export class SkyvernClient {
|
||||
request: Skyvern.RunSdkActionRequest,
|
||||
requestOptions?: SkyvernClient.RequestOptions,
|
||||
): Promise<core.WithRawResponse<Skyvern.RunSdkActionResponse>> {
|
||||
const { "x-user-agent": userAgent, ..._body } = request;
|
||||
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
|
||||
this._options?.headers,
|
||||
mergeOnlyDefinedHeaders({
|
||||
"x-user-agent": userAgent != null ? userAgent : undefined,
|
||||
"x-api-key": requestOptions?.apiKey ?? this._options?.apiKey,
|
||||
}),
|
||||
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
|
||||
requestOptions?.headers,
|
||||
);
|
||||
const _response = await core.fetcher({
|
||||
@@ -2255,7 +2268,7 @@ export class SkyvernClient {
|
||||
contentType: "application/json",
|
||||
queryParameters: requestOptions?.queryParams,
|
||||
requestType: "json",
|
||||
body: _body,
|
||||
body: request,
|
||||
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
|
||||
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
|
||||
abortSignal: requestOptions?.abortSignal,
|
||||
@@ -2266,12 +2279,6 @@ export class SkyvernClient {
|
||||
|
||||
if (_response.error.reason === "status-code") {
|
||||
switch (_response.error.statusCode) {
|
||||
case 400:
|
||||
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
|
||||
case 403:
|
||||
throw new Skyvern.ForbiddenError(_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:
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import type * as Skyvern from "../../index.js";
|
||||
|
||||
/**
|
||||
* @example
|
||||
* {
|
||||
@@ -9,6 +11,7 @@
|
||||
* only_workflows: true,
|
||||
* search_key: "search_key",
|
||||
* title: "title",
|
||||
* folder_id: "folder_id",
|
||||
* template: true
|
||||
* }
|
||||
*/
|
||||
@@ -17,9 +20,12 @@ export interface GetWorkflowsRequest {
|
||||
page_size?: number;
|
||||
only_saved_tasks?: boolean;
|
||||
only_workflows?: boolean;
|
||||
/** Unified search across workflow title and parameter metadata (key, description, default_value). */
|
||||
/** Unified search across workflow title, folder name, and parameter metadata (key, description, default_value). */
|
||||
search_key?: string;
|
||||
/** Deprecated: use search_key instead. */
|
||||
title?: string;
|
||||
/** Filter workflows by folder ID */
|
||||
folder_id?: string;
|
||||
status?: Skyvern.WorkflowStatus | Skyvern.WorkflowStatus[];
|
||||
template?: boolean;
|
||||
}
|
||||
|
||||
@@ -5,15 +5,13 @@ import type * as Skyvern from "../../index.js";
|
||||
/**
|
||||
* @example
|
||||
* {
|
||||
* "x-user-agent": "x-user-agent",
|
||||
* url: "url",
|
||||
* action: {
|
||||
* type: "ai_click"
|
||||
* type: "ai_act"
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
export interface RunSdkActionRequest {
|
||||
"x-user-agent"?: string;
|
||||
/** The URL where the action should be executed */
|
||||
url: string;
|
||||
/** The browser session ID */
|
||||
@@ -23,5 +21,5 @@ export interface RunSdkActionRequest {
|
||||
/** Optional workflow run ID to continue an existing workflow run */
|
||||
workflow_run_id?: string;
|
||||
/** The action to execute with its specific parameters */
|
||||
action: Skyvern.SdkAction;
|
||||
action: Skyvern.RunSdkActionRequestAction;
|
||||
}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
export * as scripts from "./scripts/index.js";
|
||||
export * from "./workflows/client/requests/index.js";
|
||||
export * as workflows from "./workflows/index.js";
|
||||
|
||||
540
skyvern-ts/client/src/api/resources/workflows/client/Client.ts
Normal file
540
skyvern-ts/client/src/api/resources/workflows/client/Client.ts
Normal file
@@ -0,0 +1,540 @@
|
||||
// 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,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./requests/index.js";
|
||||
@@ -0,0 +1,12 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* @example
|
||||
* {}
|
||||
*/
|
||||
export interface FolderUpdate {
|
||||
/** Folder title */
|
||||
title?: string;
|
||||
/** Folder description */
|
||||
description?: string;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
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";
|
||||
1
skyvern-ts/client/src/api/resources/workflows/index.ts
Normal file
1
skyvern-ts/client/src/api/resources/workflows/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from "./client/index.js";
|
||||
18
skyvern-ts/client/src/api/types/ActAction.ts
Normal file
18
skyvern-ts/client/src/api/types/ActAction.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* AI act action parameters.
|
||||
*/
|
||||
export interface ActAction {
|
||||
/** Natural language prompt for the action */
|
||||
intention?: string;
|
||||
/** Additional context data */
|
||||
data?: ActAction.Data;
|
||||
}
|
||||
|
||||
export namespace ActAction {
|
||||
/**
|
||||
* Additional context data
|
||||
*/
|
||||
export type Data = string | Record<string, unknown>;
|
||||
}
|
||||
@@ -34,6 +34,7 @@ export interface Action {
|
||||
option?: Skyvern.SelectOption;
|
||||
is_checked?: boolean;
|
||||
verified?: boolean;
|
||||
click_context?: Skyvern.ClickContext;
|
||||
totp_timing_info?: Record<string, unknown>;
|
||||
created_at?: string;
|
||||
modified_at?: string;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Click action parameters.
|
||||
*/
|
||||
export interface ClickAction {
|
||||
/** CSS selector for the element */
|
||||
selector?: string;
|
||||
|
||||
6
skyvern-ts/client/src/api/types/ClickContext.ts
Normal file
6
skyvern-ts/client/src/api/types/ClickContext.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
export interface ClickContext {
|
||||
thought?: string;
|
||||
single_option_click?: boolean;
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Extract data action parameters.
|
||||
*/
|
||||
export interface ExtractAction {
|
||||
/** Extraction prompt */
|
||||
prompt?: string;
|
||||
|
||||
17
skyvern-ts/client/src/api/types/Folder.ts
Normal file
17
skyvern-ts/client/src/api/types/Folder.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
// 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;
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Input text action parameters.
|
||||
*/
|
||||
export interface InputTextAction {
|
||||
/** CSS selector for the element */
|
||||
selector?: string;
|
||||
|
||||
@@ -2,13 +2,21 @@
|
||||
|
||||
import type * as Skyvern from "../index.js";
|
||||
|
||||
export type SdkAction =
|
||||
| Skyvern.SdkAction.AiClick
|
||||
| Skyvern.SdkAction.AiInputText
|
||||
| Skyvern.SdkAction.AiSelectOption
|
||||
| Skyvern.SdkAction.Extract;
|
||||
/**
|
||||
* The action to execute with its specific parameters
|
||||
*/
|
||||
export type RunSdkActionRequestAction =
|
||||
| Skyvern.RunSdkActionRequestAction.AiAct
|
||||
| Skyvern.RunSdkActionRequestAction.AiClick
|
||||
| Skyvern.RunSdkActionRequestAction.AiInputText
|
||||
| Skyvern.RunSdkActionRequestAction.AiSelectOption
|
||||
| Skyvern.RunSdkActionRequestAction.Extract;
|
||||
|
||||
export namespace RunSdkActionRequestAction {
|
||||
export interface AiAct extends Skyvern.ActAction {
|
||||
type: "ai_act";
|
||||
}
|
||||
|
||||
export namespace SdkAction {
|
||||
export interface AiClick extends Skyvern.ClickAction {
|
||||
type: "ai_click";
|
||||
}
|
||||
@@ -1,15 +1,11 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Response from running an SDK action.
|
||||
*/
|
||||
export interface RunSdkActionResponse {
|
||||
/** The workflow run ID used for this action */
|
||||
workflow_run_id: string;
|
||||
/** The result from the action (e.g., selector, value, extracted data) */
|
||||
result?: RunSdkActionResponse.Result;
|
||||
}
|
||||
|
||||
export namespace RunSdkActionResponse {
|
||||
/**
|
||||
* The result from the action (e.g., selector, value, extracted data)
|
||||
*/
|
||||
export type Result = string | Record<string, unknown> | unknown[] | number | boolean;
|
||||
result?: unknown;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Select option action parameters.
|
||||
*/
|
||||
export interface SelectOptionAction {
|
||||
/** CSS selector for the element */
|
||||
selector?: string;
|
||||
|
||||
@@ -25,6 +25,8 @@ export interface Workflow {
|
||||
cache_key?: string;
|
||||
run_sequentially?: boolean;
|
||||
sequential_key?: string;
|
||||
folder_id?: string;
|
||||
import_error?: string;
|
||||
created_at: string;
|
||||
modified_at: string;
|
||||
deleted_at?: string;
|
||||
|
||||
@@ -4,5 +4,7 @@ export const WorkflowStatus = {
|
||||
Published: "published",
|
||||
Draft: "draft",
|
||||
AutoGenerated: "auto_generated",
|
||||
Importing: "importing",
|
||||
ImportFailed: "import_failed",
|
||||
} as const;
|
||||
export type WorkflowStatus = (typeof WorkflowStatus)[keyof typeof WorkflowStatus];
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
export * from "./ActAction.js";
|
||||
export * from "./Action.js";
|
||||
export * from "./ActionBlock.js";
|
||||
export * from "./ActionBlockParametersItem.js";
|
||||
@@ -20,6 +21,7 @@ export * from "./BitwardenSensitiveInformationParameterYaml.js";
|
||||
export * from "./BlockType.js";
|
||||
export * from "./BrowserSessionResponse.js";
|
||||
export * from "./ClickAction.js";
|
||||
export * from "./ClickContext.js";
|
||||
export * from "./CodeBlock.js";
|
||||
export * from "./CodeBlockParametersItem.js";
|
||||
export * from "./CodeBlockYaml.js";
|
||||
@@ -50,6 +52,7 @@ 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";
|
||||
@@ -83,12 +86,12 @@ export * from "./PdfParserBlock.js";
|
||||
export * from "./PdfParserBlockYaml.js";
|
||||
export * from "./ProxyLocation.js";
|
||||
export * from "./RunEngine.js";
|
||||
export * from "./RunSdkActionRequestAction.js";
|
||||
export * from "./RunSdkActionResponse.js";
|
||||
export * from "./RunStatus.js";
|
||||
export * from "./Script.js";
|
||||
export * from "./ScriptFileCreate.js";
|
||||
export * from "./ScriptRunResponse.js";
|
||||
export * from "./SdkAction.js";
|
||||
export * from "./SelectOption.js";
|
||||
export * from "./SelectOptionAction.js";
|
||||
export * from "./SendEmailBlock.js";
|
||||
|
||||
@@ -1 +1 @@
|
||||
export const SDK_VERSION = "0.2.21";
|
||||
export const SDK_VERSION = "0.2.22";
|
||||
|
||||
Reference in New Issue
Block a user