get v1.0.15 version back and add support for Anthropic Claude Opus 4.6 in webbench (#4778)
This commit is contained in:
@@ -87,6 +87,7 @@ if typing.TYPE_CHECKING:
|
||||
ContextParameterSource_Workflow,
|
||||
ContextParameterValue,
|
||||
ContextParameterYaml,
|
||||
CreateCredentialRequest,
|
||||
CreateCredentialRequestCredential,
|
||||
CreateScriptResponse,
|
||||
CredentialParameter,
|
||||
@@ -511,14 +512,17 @@ if typing.TYPE_CHECKING:
|
||||
WorkflowParameterYamlDefaultValue,
|
||||
WorkflowProxyLocation,
|
||||
WorkflowRequest,
|
||||
WorkflowRun,
|
||||
WorkflowRunBlock,
|
||||
WorkflowRunBlockDataSchema,
|
||||
WorkflowRunBlockNavigationPayload,
|
||||
WorkflowRunBlockOutput,
|
||||
WorkflowRunProxyLocation,
|
||||
WorkflowRunRequest,
|
||||
WorkflowRunRequestProxyLocation,
|
||||
WorkflowRunResponse,
|
||||
WorkflowRunResponseOutput,
|
||||
WorkflowRunStatus,
|
||||
WorkflowRunTimeline,
|
||||
WorkflowRunTimelineType,
|
||||
WorkflowStatus,
|
||||
@@ -612,6 +616,7 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"ContextParameterSource_Workflow": ".types",
|
||||
"ContextParameterValue": ".types",
|
||||
"ContextParameterYaml": ".types",
|
||||
"CreateCredentialRequest": ".types",
|
||||
"CreateCredentialRequestCredential": ".types",
|
||||
"CreateScriptResponse": ".types",
|
||||
"CredentialParameter": ".types",
|
||||
@@ -1041,14 +1046,17 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"WorkflowParameterYamlDefaultValue": ".types",
|
||||
"WorkflowProxyLocation": ".types",
|
||||
"WorkflowRequest": ".types",
|
||||
"WorkflowRun": ".types",
|
||||
"WorkflowRunBlock": ".types",
|
||||
"WorkflowRunBlockDataSchema": ".types",
|
||||
"WorkflowRunBlockNavigationPayload": ".types",
|
||||
"WorkflowRunBlockOutput": ".types",
|
||||
"WorkflowRunProxyLocation": ".types",
|
||||
"WorkflowRunRequest": ".types",
|
||||
"WorkflowRunRequestProxyLocation": ".types",
|
||||
"WorkflowRunResponse": ".types",
|
||||
"WorkflowRunResponseOutput": ".types",
|
||||
"WorkflowRunStatus": ".types",
|
||||
"WorkflowRunTimeline": ".types",
|
||||
"WorkflowRunTimelineType": ".types",
|
||||
"WorkflowStatus": ".types",
|
||||
@@ -1162,6 +1170,7 @@ __all__ = [
|
||||
"ContextParameterSource_Workflow",
|
||||
"ContextParameterValue",
|
||||
"ContextParameterYaml",
|
||||
"CreateCredentialRequest",
|
||||
"CreateCredentialRequestCredential",
|
||||
"CreateScriptResponse",
|
||||
"CredentialParameter",
|
||||
@@ -1591,14 +1600,17 @@ __all__ = [
|
||||
"WorkflowParameterYamlDefaultValue",
|
||||
"WorkflowProxyLocation",
|
||||
"WorkflowRequest",
|
||||
"WorkflowRun",
|
||||
"WorkflowRunBlock",
|
||||
"WorkflowRunBlockDataSchema",
|
||||
"WorkflowRunBlockNavigationPayload",
|
||||
"WorkflowRunBlockOutput",
|
||||
"WorkflowRunProxyLocation",
|
||||
"WorkflowRunRequest",
|
||||
"WorkflowRunRequestProxyLocation",
|
||||
"WorkflowRunResponse",
|
||||
"WorkflowRunResponseOutput",
|
||||
"WorkflowRunStatus",
|
||||
"WorkflowRunTimeline",
|
||||
"WorkflowRunTimelineType",
|
||||
"WorkflowStatus",
|
||||
|
||||
@@ -43,8 +43,10 @@ from .types.totp_code import TotpCode
|
||||
from .types.upload_file_response import UploadFileResponse
|
||||
from .types.workflow import Workflow
|
||||
from .types.workflow_create_yaml_request import WorkflowCreateYamlRequest
|
||||
from .types.workflow_run import WorkflowRun
|
||||
from .types.workflow_run_request_proxy_location import WorkflowRunRequestProxyLocation
|
||||
from .types.workflow_run_response import WorkflowRunResponse
|
||||
from .types.workflow_run_status import WorkflowRunStatus
|
||||
from .types.workflow_run_timeline import WorkflowRunTimeline
|
||||
from .types.workflow_status import WorkflowStatus
|
||||
|
||||
@@ -549,10 +551,10 @@ class Skyvern:
|
||||
only_templates : typing.Optional[bool]
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Unified search across workflow title, folder name, and parameter metadata (key, description, default_value).
|
||||
Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter.
|
||||
|
||||
title : typing.Optional[str]
|
||||
Deprecated: use search_key instead.
|
||||
Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.
|
||||
|
||||
folder_id : typing.Optional[str]
|
||||
Filter workflows by folder ID
|
||||
@@ -878,6 +880,95 @@ class Skyvern:
|
||||
_response = self._raw_client.get_run_timeline(run_id, request_options=request_options)
|
||||
return _response.data
|
||||
|
||||
def get_workflow_runs(
|
||||
self,
|
||||
*,
|
||||
page: typing.Optional[int] = None,
|
||||
page_size: typing.Optional[int] = None,
|
||||
status: typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]] = None,
|
||||
search_key: typing.Optional[str] = None,
|
||||
error_code: typing.Optional[str] = None,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> typing.List[WorkflowRun]:
|
||||
"""
|
||||
List workflow runs across all workflows for the current organization.
|
||||
|
||||
Results are paginated and can be filtered by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic — a run must match every supplied filter to be returned.
|
||||
|
||||
### search_key
|
||||
|
||||
A case-insensitive substring search that matches against **any** of the following fields:
|
||||
|
||||
| Searched field | Description |
|
||||
|---|---|
|
||||
| `workflow_run_id` | The unique run identifier (e.g. `wr_123…`) |
|
||||
| Parameter **key** | The `key` of any workflow parameter definition associated with the run |
|
||||
| Parameter **description** | The `description` of any workflow parameter definition |
|
||||
| Run parameter **value** | The actual value supplied for any parameter when the run was created |
|
||||
| `extra_http_headers` | Extra HTTP headers attached to the run (searched as raw JSON text) |
|
||||
|
||||
Soft-deleted parameter definitions are excluded from key/description matching. A run is returned if **any** of the fields above contain the search term.
|
||||
|
||||
### error_code
|
||||
|
||||
An **exact-match** filter against the `error_code` field inside each task's `errors` JSON array. A run matches if **any** of its tasks contains an error object with a matching `error_code` value. Error codes are user-defined strings set during workflow execution (e.g. `INVALID_CREDENTIALS`, `LOGIN_FAILED`, `CAPTCHA_DETECTED`).
|
||||
|
||||
### Combining filters
|
||||
|
||||
All query parameters use AND logic:
|
||||
- `?status=failed` — only failed runs
|
||||
- `?status=failed&error_code=LOGIN_FAILED` — failed runs **and** have a LOGIN_FAILED error
|
||||
- `?status=failed&error_code=LOGIN_FAILED&search_key=prod_credential` — all three conditions must match
|
||||
|
||||
Parameters
|
||||
----------
|
||||
page : typing.Optional[int]
|
||||
Page number for pagination.
|
||||
|
||||
page_size : typing.Optional[int]
|
||||
Number of runs to return per page.
|
||||
|
||||
status : typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]]
|
||||
Filter by one or more run statuses.
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, and extra HTTP headers. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching.
|
||||
|
||||
error_code : typing.Optional[str]
|
||||
Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
typing.List[WorkflowRun]
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.get_workflow_runs(
|
||||
page=1,
|
||||
page_size=1,
|
||||
search_key="search_key",
|
||||
error_code="error_code",
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.get_workflow_runs(
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
status=status,
|
||||
search_key=search_key,
|
||||
error_code=error_code,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
def get_workflow(
|
||||
self,
|
||||
workflow_permanent_id: str,
|
||||
@@ -1482,6 +1573,66 @@ class Skyvern:
|
||||
)
|
||||
return _response.data
|
||||
|
||||
def update_credential(
|
||||
self,
|
||||
credential_id: str,
|
||||
*,
|
||||
name: str,
|
||||
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
|
||||
credential: CreateCredentialRequestCredential,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> CredentialResponse:
|
||||
"""
|
||||
Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
credential_id : str
|
||||
The unique identifier of the credential to update
|
||||
|
||||
name : str
|
||||
Name of the credential
|
||||
|
||||
credential_type : SkyvernForgeSdkSchemasCredentialsCredentialType
|
||||
Type of credential to create
|
||||
|
||||
credential : CreateCredentialRequestCredential
|
||||
The credential data to store
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
CredentialResponse
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import NonEmptyPasswordCredential, Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.update_credential(
|
||||
credential_id="cred_1234567890",
|
||||
name="My Credential",
|
||||
credential_type="password",
|
||||
credential=NonEmptyPasswordCredential(
|
||||
password="newpassword123",
|
||||
username="user@example.com",
|
||||
),
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.update_credential(
|
||||
credential_id,
|
||||
name=name,
|
||||
credential_type=credential_type,
|
||||
credential=credential,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
def delete_credential(self, credential_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
||||
"""
|
||||
Deletes a specific credential by its ID
|
||||
@@ -2684,10 +2835,10 @@ class AsyncSkyvern:
|
||||
only_templates : typing.Optional[bool]
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Unified search across workflow title, folder name, and parameter metadata (key, description, default_value).
|
||||
Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter.
|
||||
|
||||
title : typing.Optional[str]
|
||||
Deprecated: use search_key instead.
|
||||
Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.
|
||||
|
||||
folder_id : typing.Optional[str]
|
||||
Filter workflows by folder ID
|
||||
@@ -3079,6 +3230,103 @@ class AsyncSkyvern:
|
||||
_response = await self._raw_client.get_run_timeline(run_id, request_options=request_options)
|
||||
return _response.data
|
||||
|
||||
async def get_workflow_runs(
|
||||
self,
|
||||
*,
|
||||
page: typing.Optional[int] = None,
|
||||
page_size: typing.Optional[int] = None,
|
||||
status: typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]] = None,
|
||||
search_key: typing.Optional[str] = None,
|
||||
error_code: typing.Optional[str] = None,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> typing.List[WorkflowRun]:
|
||||
"""
|
||||
List workflow runs across all workflows for the current organization.
|
||||
|
||||
Results are paginated and can be filtered by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic — a run must match every supplied filter to be returned.
|
||||
|
||||
### search_key
|
||||
|
||||
A case-insensitive substring search that matches against **any** of the following fields:
|
||||
|
||||
| Searched field | Description |
|
||||
|---|---|
|
||||
| `workflow_run_id` | The unique run identifier (e.g. `wr_123…`) |
|
||||
| Parameter **key** | The `key` of any workflow parameter definition associated with the run |
|
||||
| Parameter **description** | The `description` of any workflow parameter definition |
|
||||
| Run parameter **value** | The actual value supplied for any parameter when the run was created |
|
||||
| `extra_http_headers` | Extra HTTP headers attached to the run (searched as raw JSON text) |
|
||||
|
||||
Soft-deleted parameter definitions are excluded from key/description matching. A run is returned if **any** of the fields above contain the search term.
|
||||
|
||||
### error_code
|
||||
|
||||
An **exact-match** filter against the `error_code` field inside each task's `errors` JSON array. A run matches if **any** of its tasks contains an error object with a matching `error_code` value. Error codes are user-defined strings set during workflow execution (e.g. `INVALID_CREDENTIALS`, `LOGIN_FAILED`, `CAPTCHA_DETECTED`).
|
||||
|
||||
### Combining filters
|
||||
|
||||
All query parameters use AND logic:
|
||||
- `?status=failed` — only failed runs
|
||||
- `?status=failed&error_code=LOGIN_FAILED` — failed runs **and** have a LOGIN_FAILED error
|
||||
- `?status=failed&error_code=LOGIN_FAILED&search_key=prod_credential` — all three conditions must match
|
||||
|
||||
Parameters
|
||||
----------
|
||||
page : typing.Optional[int]
|
||||
Page number for pagination.
|
||||
|
||||
page_size : typing.Optional[int]
|
||||
Number of runs to return per page.
|
||||
|
||||
status : typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]]
|
||||
Filter by one or more run statuses.
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, and extra HTTP headers. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching.
|
||||
|
||||
error_code : typing.Optional[str]
|
||||
Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
typing.List[WorkflowRun]
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.get_workflow_runs(
|
||||
page=1,
|
||||
page_size=1,
|
||||
search_key="search_key",
|
||||
error_code="error_code",
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.get_workflow_runs(
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
status=status,
|
||||
search_key=search_key,
|
||||
error_code=error_code,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
async def get_workflow(
|
||||
self,
|
||||
workflow_permanent_id: str,
|
||||
@@ -3797,6 +4045,74 @@ class AsyncSkyvern:
|
||||
)
|
||||
return _response.data
|
||||
|
||||
async def update_credential(
|
||||
self,
|
||||
credential_id: str,
|
||||
*,
|
||||
name: str,
|
||||
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
|
||||
credential: CreateCredentialRequestCredential,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> CredentialResponse:
|
||||
"""
|
||||
Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
credential_id : str
|
||||
The unique identifier of the credential to update
|
||||
|
||||
name : str
|
||||
Name of the credential
|
||||
|
||||
credential_type : SkyvernForgeSdkSchemasCredentialsCredentialType
|
||||
Type of credential to create
|
||||
|
||||
credential : CreateCredentialRequestCredential
|
||||
The credential data to store
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
CredentialResponse
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern, NonEmptyPasswordCredential
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.update_credential(
|
||||
credential_id="cred_1234567890",
|
||||
name="My Credential",
|
||||
credential_type="password",
|
||||
credential=NonEmptyPasswordCredential(
|
||||
password="newpassword123",
|
||||
username="user@example.com",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.update_credential(
|
||||
credential_id,
|
||||
name=name,
|
||||
credential_type=credential_type,
|
||||
credential=credential,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
async def delete_credential(
|
||||
self, credential_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> None:
|
||||
|
||||
@@ -22,10 +22,10 @@ class BaseClientWrapper:
|
||||
|
||||
def get_headers(self) -> typing.Dict[str, str]:
|
||||
headers: typing.Dict[str, str] = {
|
||||
"User-Agent": "skyvern/1.0.13",
|
||||
"User-Agent": "skyvern/1.0.15",
|
||||
"X-Fern-Language": "Python",
|
||||
"X-Fern-SDK-Name": "skyvern",
|
||||
"X-Fern-SDK-Version": "1.0.13",
|
||||
"X-Fern-SDK-Version": "1.0.15",
|
||||
**(self.get_custom_headers() or {}),
|
||||
}
|
||||
if self._api_key is not None:
|
||||
|
||||
@@ -49,8 +49,10 @@ from .types.totp_code import TotpCode
|
||||
from .types.upload_file_response import UploadFileResponse
|
||||
from .types.workflow import Workflow
|
||||
from .types.workflow_create_yaml_request import WorkflowCreateYamlRequest
|
||||
from .types.workflow_run import WorkflowRun
|
||||
from .types.workflow_run_request_proxy_location import WorkflowRunRequestProxyLocation
|
||||
from .types.workflow_run_response import WorkflowRunResponse
|
||||
from .types.workflow_run_status import WorkflowRunStatus
|
||||
from .types.workflow_run_timeline import WorkflowRunTimeline
|
||||
from .types.workflow_status import WorkflowStatus
|
||||
|
||||
@@ -595,10 +597,10 @@ class RawSkyvern:
|
||||
only_templates : typing.Optional[bool]
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Unified search across workflow title, folder name, and parameter metadata (key, description, default_value).
|
||||
Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter.
|
||||
|
||||
title : typing.Optional[str]
|
||||
Deprecated: use search_key instead.
|
||||
Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.
|
||||
|
||||
folder_id : typing.Optional[str]
|
||||
Filter workflows by folder ID
|
||||
@@ -1111,6 +1113,109 @@ class RawSkyvern:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def get_workflow_runs(
|
||||
self,
|
||||
*,
|
||||
page: typing.Optional[int] = None,
|
||||
page_size: typing.Optional[int] = None,
|
||||
status: typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]] = None,
|
||||
search_key: typing.Optional[str] = None,
|
||||
error_code: typing.Optional[str] = None,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> HttpResponse[typing.List[WorkflowRun]]:
|
||||
"""
|
||||
List workflow runs across all workflows for the current organization.
|
||||
|
||||
Results are paginated and can be filtered by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic — a run must match every supplied filter to be returned.
|
||||
|
||||
### search_key
|
||||
|
||||
A case-insensitive substring search that matches against **any** of the following fields:
|
||||
|
||||
| Searched field | Description |
|
||||
|---|---|
|
||||
| `workflow_run_id` | The unique run identifier (e.g. `wr_123…`) |
|
||||
| Parameter **key** | The `key` of any workflow parameter definition associated with the run |
|
||||
| Parameter **description** | The `description` of any workflow parameter definition |
|
||||
| Run parameter **value** | The actual value supplied for any parameter when the run was created |
|
||||
| `extra_http_headers` | Extra HTTP headers attached to the run (searched as raw JSON text) |
|
||||
|
||||
Soft-deleted parameter definitions are excluded from key/description matching. A run is returned if **any** of the fields above contain the search term.
|
||||
|
||||
### error_code
|
||||
|
||||
An **exact-match** filter against the `error_code` field inside each task's `errors` JSON array. A run matches if **any** of its tasks contains an error object with a matching `error_code` value. Error codes are user-defined strings set during workflow execution (e.g. `INVALID_CREDENTIALS`, `LOGIN_FAILED`, `CAPTCHA_DETECTED`).
|
||||
|
||||
### Combining filters
|
||||
|
||||
All query parameters use AND logic:
|
||||
- `?status=failed` — only failed runs
|
||||
- `?status=failed&error_code=LOGIN_FAILED` — failed runs **and** have a LOGIN_FAILED error
|
||||
- `?status=failed&error_code=LOGIN_FAILED&search_key=prod_credential` — all three conditions must match
|
||||
|
||||
Parameters
|
||||
----------
|
||||
page : typing.Optional[int]
|
||||
Page number for pagination.
|
||||
|
||||
page_size : typing.Optional[int]
|
||||
Number of runs to return per page.
|
||||
|
||||
status : typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]]
|
||||
Filter by one or more run statuses.
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, and extra HTTP headers. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching.
|
||||
|
||||
error_code : typing.Optional[str]
|
||||
Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[typing.List[WorkflowRun]]
|
||||
Successful Response
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
"v1/workflows/runs",
|
||||
method="GET",
|
||||
params={
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"status": status,
|
||||
"search_key": search_key,
|
||||
"error_code": error_code,
|
||||
},
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
typing.List[WorkflowRun],
|
||||
parse_obj_as(
|
||||
type_=typing.List[WorkflowRun], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return HttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def get_workflow(
|
||||
self,
|
||||
workflow_permanent_id: str,
|
||||
@@ -2077,6 +2182,82 @@ class RawSkyvern:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def update_credential(
|
||||
self,
|
||||
credential_id: str,
|
||||
*,
|
||||
name: str,
|
||||
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
|
||||
credential: CreateCredentialRequestCredential,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> HttpResponse[CredentialResponse]:
|
||||
"""
|
||||
Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
credential_id : str
|
||||
The unique identifier of the credential to update
|
||||
|
||||
name : str
|
||||
Name of the credential
|
||||
|
||||
credential_type : SkyvernForgeSdkSchemasCredentialsCredentialType
|
||||
Type of credential to create
|
||||
|
||||
credential : CreateCredentialRequestCredential
|
||||
The credential data to store
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[CredentialResponse]
|
||||
Successful Response
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
f"v1/credentials/{jsonable_encoder(credential_id)}/update",
|
||||
method="POST",
|
||||
json={
|
||||
"name": name,
|
||||
"credential_type": credential_type,
|
||||
"credential": convert_and_respect_annotation_metadata(
|
||||
object_=credential, annotation=CreateCredentialRequestCredential, direction="write"
|
||||
),
|
||||
},
|
||||
headers={
|
||||
"content-type": "application/json",
|
||||
},
|
||||
request_options=request_options,
|
||||
omit=OMIT,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
CredentialResponse,
|
||||
parse_obj_as(
|
||||
type_=CredentialResponse, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return HttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def delete_credential(
|
||||
self, credential_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> HttpResponse[None]:
|
||||
@@ -3545,10 +3726,10 @@ class AsyncRawSkyvern:
|
||||
only_templates : typing.Optional[bool]
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Unified search across workflow title, folder name, and parameter metadata (key, description, default_value).
|
||||
Case-insensitive substring search across: workflow title, folder name, and parameter metadata (key, description, default_value). A workflow is returned if any of these fields match. Soft-deleted parameter definitions are excluded. Takes precedence over the deprecated `title` parameter.
|
||||
|
||||
title : typing.Optional[str]
|
||||
Deprecated: use search_key instead.
|
||||
Deprecated: use search_key instead. Falls back to title-only search if search_key is not provided.
|
||||
|
||||
folder_id : typing.Optional[str]
|
||||
Filter workflows by folder ID
|
||||
@@ -4061,6 +4242,109 @@ class AsyncRawSkyvern:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def get_workflow_runs(
|
||||
self,
|
||||
*,
|
||||
page: typing.Optional[int] = None,
|
||||
page_size: typing.Optional[int] = None,
|
||||
status: typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]] = None,
|
||||
search_key: typing.Optional[str] = None,
|
||||
error_code: typing.Optional[str] = None,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> AsyncHttpResponse[typing.List[WorkflowRun]]:
|
||||
"""
|
||||
List workflow runs across all workflows for the current organization.
|
||||
|
||||
Results are paginated and can be filtered by **status**, **search_key**, and **error_code**. All filters are combined with **AND** logic — a run must match every supplied filter to be returned.
|
||||
|
||||
### search_key
|
||||
|
||||
A case-insensitive substring search that matches against **any** of the following fields:
|
||||
|
||||
| Searched field | Description |
|
||||
|---|---|
|
||||
| `workflow_run_id` | The unique run identifier (e.g. `wr_123…`) |
|
||||
| Parameter **key** | The `key` of any workflow parameter definition associated with the run |
|
||||
| Parameter **description** | The `description` of any workflow parameter definition |
|
||||
| Run parameter **value** | The actual value supplied for any parameter when the run was created |
|
||||
| `extra_http_headers` | Extra HTTP headers attached to the run (searched as raw JSON text) |
|
||||
|
||||
Soft-deleted parameter definitions are excluded from key/description matching. A run is returned if **any** of the fields above contain the search term.
|
||||
|
||||
### error_code
|
||||
|
||||
An **exact-match** filter against the `error_code` field inside each task's `errors` JSON array. A run matches if **any** of its tasks contains an error object with a matching `error_code` value. Error codes are user-defined strings set during workflow execution (e.g. `INVALID_CREDENTIALS`, `LOGIN_FAILED`, `CAPTCHA_DETECTED`).
|
||||
|
||||
### Combining filters
|
||||
|
||||
All query parameters use AND logic:
|
||||
- `?status=failed` — only failed runs
|
||||
- `?status=failed&error_code=LOGIN_FAILED` — failed runs **and** have a LOGIN_FAILED error
|
||||
- `?status=failed&error_code=LOGIN_FAILED&search_key=prod_credential` — all three conditions must match
|
||||
|
||||
Parameters
|
||||
----------
|
||||
page : typing.Optional[int]
|
||||
Page number for pagination.
|
||||
|
||||
page_size : typing.Optional[int]
|
||||
Number of runs to return per page.
|
||||
|
||||
status : typing.Optional[typing.Union[WorkflowRunStatus, typing.Sequence[WorkflowRunStatus]]]
|
||||
Filter by one or more run statuses.
|
||||
|
||||
search_key : typing.Optional[str]
|
||||
Case-insensitive substring search across: workflow run ID, parameter key, parameter description, run parameter value, and extra HTTP headers. A run is returned if any of these fields match. Soft-deleted parameter definitions are excluded from key/description matching.
|
||||
|
||||
error_code : typing.Optional[str]
|
||||
Exact-match filter on the error_code field inside each task's errors JSON array. A run matches if any of its tasks contains an error with a matching error_code. Error codes are user-defined strings set during workflow execution.
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[typing.List[WorkflowRun]]
|
||||
Successful Response
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
"v1/workflows/runs",
|
||||
method="GET",
|
||||
params={
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"status": status,
|
||||
"search_key": search_key,
|
||||
"error_code": error_code,
|
||||
},
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
typing.List[WorkflowRun],
|
||||
parse_obj_as(
|
||||
type_=typing.List[WorkflowRun], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return AsyncHttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def get_workflow(
|
||||
self,
|
||||
workflow_permanent_id: str,
|
||||
@@ -5027,6 +5311,82 @@ class AsyncRawSkyvern:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def update_credential(
|
||||
self,
|
||||
credential_id: str,
|
||||
*,
|
||||
name: str,
|
||||
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
|
||||
credential: CreateCredentialRequestCredential,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> AsyncHttpResponse[CredentialResponse]:
|
||||
"""
|
||||
Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
credential_id : str
|
||||
The unique identifier of the credential to update
|
||||
|
||||
name : str
|
||||
Name of the credential
|
||||
|
||||
credential_type : SkyvernForgeSdkSchemasCredentialsCredentialType
|
||||
Type of credential to create
|
||||
|
||||
credential : CreateCredentialRequestCredential
|
||||
The credential data to store
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[CredentialResponse]
|
||||
Successful Response
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
f"v1/credentials/{jsonable_encoder(credential_id)}/update",
|
||||
method="POST",
|
||||
json={
|
||||
"name": name,
|
||||
"credential_type": credential_type,
|
||||
"credential": convert_and_respect_annotation_metadata(
|
||||
object_=credential, annotation=CreateCredentialRequestCredential, direction="write"
|
||||
),
|
||||
},
|
||||
headers={
|
||||
"content-type": "application/json",
|
||||
},
|
||||
request_options=request_options,
|
||||
omit=OMIT,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
CredentialResponse,
|
||||
parse_obj_as(
|
||||
type_=CredentialResponse, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return AsyncHttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def delete_credential(
|
||||
self, credential_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> AsyncHttpResponse[None]:
|
||||
|
||||
@@ -94,6 +94,7 @@ if typing.TYPE_CHECKING:
|
||||
)
|
||||
from .context_parameter_value import ContextParameterValue
|
||||
from .context_parameter_yaml import ContextParameterYaml
|
||||
from .create_credential_request import CreateCredentialRequest
|
||||
from .create_credential_request_credential import CreateCredentialRequestCredential
|
||||
from .create_script_response import CreateScriptResponse
|
||||
from .credential_parameter import CredentialParameter
|
||||
@@ -560,14 +561,17 @@ if typing.TYPE_CHECKING:
|
||||
from .workflow_parameter_yaml_default_value import WorkflowParameterYamlDefaultValue
|
||||
from .workflow_proxy_location import WorkflowProxyLocation
|
||||
from .workflow_request import WorkflowRequest
|
||||
from .workflow_run import WorkflowRun
|
||||
from .workflow_run_block import WorkflowRunBlock
|
||||
from .workflow_run_block_data_schema import WorkflowRunBlockDataSchema
|
||||
from .workflow_run_block_navigation_payload import WorkflowRunBlockNavigationPayload
|
||||
from .workflow_run_block_output import WorkflowRunBlockOutput
|
||||
from .workflow_run_proxy_location import WorkflowRunProxyLocation
|
||||
from .workflow_run_request import WorkflowRunRequest
|
||||
from .workflow_run_request_proxy_location import WorkflowRunRequestProxyLocation
|
||||
from .workflow_run_response import WorkflowRunResponse
|
||||
from .workflow_run_response_output import WorkflowRunResponseOutput
|
||||
from .workflow_run_status import WorkflowRunStatus
|
||||
from .workflow_run_timeline import WorkflowRunTimeline
|
||||
from .workflow_run_timeline_type import WorkflowRunTimelineType
|
||||
from .workflow_status import WorkflowStatus
|
||||
@@ -652,6 +656,7 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"ContextParameterSource_Workflow": ".context_parameter_source",
|
||||
"ContextParameterValue": ".context_parameter_value",
|
||||
"ContextParameterYaml": ".context_parameter_yaml",
|
||||
"CreateCredentialRequest": ".create_credential_request",
|
||||
"CreateCredentialRequestCredential": ".create_credential_request_credential",
|
||||
"CreateScriptResponse": ".create_script_response",
|
||||
"CredentialParameter": ".credential_parameter",
|
||||
@@ -1076,14 +1081,17 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"WorkflowParameterYamlDefaultValue": ".workflow_parameter_yaml_default_value",
|
||||
"WorkflowProxyLocation": ".workflow_proxy_location",
|
||||
"WorkflowRequest": ".workflow_request",
|
||||
"WorkflowRun": ".workflow_run",
|
||||
"WorkflowRunBlock": ".workflow_run_block",
|
||||
"WorkflowRunBlockDataSchema": ".workflow_run_block_data_schema",
|
||||
"WorkflowRunBlockNavigationPayload": ".workflow_run_block_navigation_payload",
|
||||
"WorkflowRunBlockOutput": ".workflow_run_block_output",
|
||||
"WorkflowRunProxyLocation": ".workflow_run_proxy_location",
|
||||
"WorkflowRunRequest": ".workflow_run_request",
|
||||
"WorkflowRunRequestProxyLocation": ".workflow_run_request_proxy_location",
|
||||
"WorkflowRunResponse": ".workflow_run_response",
|
||||
"WorkflowRunResponseOutput": ".workflow_run_response_output",
|
||||
"WorkflowRunStatus": ".workflow_run_status",
|
||||
"WorkflowRunTimeline": ".workflow_run_timeline",
|
||||
"WorkflowRunTimelineType": ".workflow_run_timeline_type",
|
||||
"WorkflowStatus": ".workflow_status",
|
||||
@@ -1192,6 +1200,7 @@ __all__ = [
|
||||
"ContextParameterSource_Workflow",
|
||||
"ContextParameterValue",
|
||||
"ContextParameterYaml",
|
||||
"CreateCredentialRequest",
|
||||
"CreateCredentialRequestCredential",
|
||||
"CreateScriptResponse",
|
||||
"CredentialParameter",
|
||||
@@ -1616,14 +1625,17 @@ __all__ = [
|
||||
"WorkflowParameterYamlDefaultValue",
|
||||
"WorkflowProxyLocation",
|
||||
"WorkflowRequest",
|
||||
"WorkflowRun",
|
||||
"WorkflowRunBlock",
|
||||
"WorkflowRunBlockDataSchema",
|
||||
"WorkflowRunBlockNavigationPayload",
|
||||
"WorkflowRunBlockOutput",
|
||||
"WorkflowRunProxyLocation",
|
||||
"WorkflowRunRequest",
|
||||
"WorkflowRunRequestProxyLocation",
|
||||
"WorkflowRunResponse",
|
||||
"WorkflowRunResponseOutput",
|
||||
"WorkflowRunStatus",
|
||||
"WorkflowRunTimeline",
|
||||
"WorkflowRunTimelineType",
|
||||
"WorkflowStatus",
|
||||
|
||||
@@ -51,6 +51,7 @@ class Action(UniversalBaseModel):
|
||||
click_context: typing.Optional[ClickContext] = None
|
||||
totp_timing_info: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
||||
has_mini_agent: typing.Optional[bool] = None
|
||||
skip_auto_complete_tab: typing.Optional[bool] = None
|
||||
created_at: typing.Optional[dt.datetime] = None
|
||||
modified_at: typing.Optional[dt.datetime] = None
|
||||
created_by: typing.Optional[str] = None
|
||||
|
||||
38
skyvern/client/types/create_credential_request.py
Normal file
38
skyvern/client/types/create_credential_request.py
Normal file
@@ -0,0 +1,38 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
|
||||
import pydantic
|
||||
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
||||
from .create_credential_request_credential import CreateCredentialRequestCredential
|
||||
from .skyvern_forge_sdk_schemas_credentials_credential_type import SkyvernForgeSdkSchemasCredentialsCredentialType
|
||||
|
||||
|
||||
class CreateCredentialRequest(UniversalBaseModel):
|
||||
"""
|
||||
Request model for creating a new credential.
|
||||
"""
|
||||
|
||||
name: str = pydantic.Field()
|
||||
"""
|
||||
Name of the credential
|
||||
"""
|
||||
|
||||
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType = pydantic.Field()
|
||||
"""
|
||||
Type of credential to create
|
||||
"""
|
||||
|
||||
credential: CreateCredentialRequestCredential = pydantic.Field()
|
||||
"""
|
||||
The credential data to store
|
||||
"""
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
import typing
|
||||
|
||||
FileType = typing.Union[typing.Literal["csv", "excel", "pdf", "image"], typing.Any]
|
||||
FileType = typing.Union[typing.Literal["csv", "excel", "pdf", "image", "docx"], typing.Any]
|
||||
|
||||
@@ -11,6 +11,8 @@ class ValidationError(UniversalBaseModel):
|
||||
loc: typing.List[ValidationErrorLocItem]
|
||||
msg: str
|
||||
type: str
|
||||
input: typing.Optional[typing.Optional[typing.Any]] = None
|
||||
ctx: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
|
||||
53
skyvern/client/types/workflow_run.py
Normal file
53
skyvern/client/types/workflow_run.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import datetime as dt
|
||||
import typing
|
||||
|
||||
import pydantic
|
||||
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
||||
from .script_run_response import ScriptRunResponse
|
||||
from .workflow_run_proxy_location import WorkflowRunProxyLocation
|
||||
from .workflow_run_status import WorkflowRunStatus
|
||||
|
||||
|
||||
class WorkflowRun(UniversalBaseModel):
|
||||
workflow_run_id: str
|
||||
workflow_id: str
|
||||
workflow_permanent_id: str
|
||||
organization_id: str
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
debug_session_id: typing.Optional[str] = None
|
||||
status: WorkflowRunStatus
|
||||
extra_http_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None
|
||||
proxy_location: typing.Optional[WorkflowRunProxyLocation] = None
|
||||
webhook_callback_url: typing.Optional[str] = None
|
||||
webhook_failure_reason: typing.Optional[str] = None
|
||||
totp_verification_url: typing.Optional[str] = None
|
||||
totp_identifier: typing.Optional[str] = None
|
||||
failure_reason: typing.Optional[str] = None
|
||||
parent_workflow_run_id: typing.Optional[str] = None
|
||||
workflow_title: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
browser_address: typing.Optional[str] = None
|
||||
run_with: typing.Optional[str] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
job_id: typing.Optional[str] = None
|
||||
depends_on_workflow_run_id: typing.Optional[str] = None
|
||||
sequential_key: typing.Optional[str] = None
|
||||
ai_fallback: typing.Optional[bool] = None
|
||||
code_gen: typing.Optional[bool] = None
|
||||
queued_at: typing.Optional[dt.datetime] = None
|
||||
started_at: typing.Optional[dt.datetime] = None
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
created_at: dt.datetime
|
||||
modified_at: dt.datetime
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
8
skyvern/client/types/workflow_run_proxy_location.py
Normal file
8
skyvern/client/types/workflow_run_proxy_location.py
Normal file
@@ -0,0 +1,8 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
|
||||
from .geo_target import GeoTarget
|
||||
from .proxy_location import ProxyLocation
|
||||
|
||||
WorkflowRunProxyLocation = typing.Union[ProxyLocation, GeoTarget, typing.Dict[str, typing.Optional[typing.Any]]]
|
||||
10
skyvern/client/types/workflow_run_status.py
Normal file
10
skyvern/client/types/workflow_run_status.py
Normal file
@@ -0,0 +1,10 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
|
||||
WorkflowRunStatus = typing.Union[
|
||||
typing.Literal[
|
||||
"created", "queued", "running", "failed", "terminated", "canceled", "timed_out", "completed", "paused"
|
||||
],
|
||||
typing.Any,
|
||||
]
|
||||
Reference in New Issue
Block a user