From 83f8dca159e17182e9dbadea75f8f12b98e8225a Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Wed, 21 May 2025 21:31:10 -0700 Subject: [PATCH] new sdk v0.1.85 (#2421) --- fern/openapi/skyvern_openapi.json | 356 ++++---------- pyproject.toml | 2 +- skyvern/client/__init__.py | 164 +++++++ skyvern/client/agent/client.py | 135 ------ .../agent/types/agent_get_run_response.py | 5 + skyvern/client/browser_session/client.py | 8 - skyvern/client/client.py | 8 - skyvern/client/core/client_wrapper.py | 18 +- skyvern/client/credentials/client.py | 14 +- skyvern/client/types/__init__.py | 170 +++++++ skyvern/client/types/action_block_yaml.py | 31 ++ .../client/types/aws_secret_parameter_yaml.py | 21 + ...twarden_credit_card_data_parameter_yaml.py | 25 + ...twarden_login_credential_parameter_yaml.py | 26 + ...en_sensitive_information_parameter_yaml.py | 26 + skyvern/client/types/code_block_yaml.py | 22 + .../client/types/context_parameter_yaml.py | 21 + .../client/types/credential_parameter_yaml.py | 21 + .../client/types/download_to_s3block_yaml.py | 21 + skyvern/client/types/extraction_block_yaml.py | 29 ++ .../extraction_block_yaml_data_schema.py | 7 + .../client/types/file_download_block_yaml.py | 31 ++ .../client/types/file_parser_block_yaml.py | 23 + .../client/types/file_upload_block_yaml.py | 29 ++ skyvern/client/types/for_loop_block_yaml.py | 31 ++ .../for_loop_block_yaml_loop_blocks_item.py | 448 +++++++++++++++++ skyvern/client/types/login_block_yaml.py | 33 ++ skyvern/client/types/navigation_block_yaml.py | 38 ++ skyvern/client/types/output_parameter_yaml.py | 20 + skyvern/client/types/pdf_parser_block_yaml.py | 22 + skyvern/client/types/send_email_block_yaml.py | 29 ++ skyvern/client/types/task_block_yaml.py | 39 ++ .../types/task_block_yaml_data_schema.py | 7 + skyvern/client/types/task_run_response.py | 5 + skyvern/client/types/task_v2block_yaml.py | 26 + .../client/types/text_prompt_block_yaml.py | 24 + .../client/types/upload_to_s3block_yaml.py | 21 + skyvern/client/types/url_block_yaml.py | 21 + skyvern/client/types/validation_block_yaml.py | 24 + skyvern/client/types/wait_block_yaml.py | 21 + .../types/workflow_create_yaml_request.py | 32 ++ .../client/types/workflow_definition_yaml.py | 23 + .../workflow_definition_yaml_blocks_item.py | 449 ++++++++++++++++++ ...orkflow_definition_yaml_parameters_item.py | 163 +++++++ .../client/types/workflow_parameter_yaml.py | 24 + .../workflow_parameter_yaml_default_value.py | 7 + skyvern/client/types/workflow_request.py | 29 ++ skyvern/client/types/workflow_run_response.py | 5 + skyvern/client/workflows/client.py | 219 ++++++++- 49 files changed, 2510 insertions(+), 463 deletions(-) create mode 100644 skyvern/client/types/action_block_yaml.py create mode 100644 skyvern/client/types/aws_secret_parameter_yaml.py create mode 100644 skyvern/client/types/bitwarden_credit_card_data_parameter_yaml.py create mode 100644 skyvern/client/types/bitwarden_login_credential_parameter_yaml.py create mode 100644 skyvern/client/types/bitwarden_sensitive_information_parameter_yaml.py create mode 100644 skyvern/client/types/code_block_yaml.py create mode 100644 skyvern/client/types/context_parameter_yaml.py create mode 100644 skyvern/client/types/credential_parameter_yaml.py create mode 100644 skyvern/client/types/download_to_s3block_yaml.py create mode 100644 skyvern/client/types/extraction_block_yaml.py create mode 100644 skyvern/client/types/extraction_block_yaml_data_schema.py create mode 100644 skyvern/client/types/file_download_block_yaml.py create mode 100644 skyvern/client/types/file_parser_block_yaml.py create mode 100644 skyvern/client/types/file_upload_block_yaml.py create mode 100644 skyvern/client/types/for_loop_block_yaml.py create mode 100644 skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py create mode 100644 skyvern/client/types/login_block_yaml.py create mode 100644 skyvern/client/types/navigation_block_yaml.py create mode 100644 skyvern/client/types/output_parameter_yaml.py create mode 100644 skyvern/client/types/pdf_parser_block_yaml.py create mode 100644 skyvern/client/types/send_email_block_yaml.py create mode 100644 skyvern/client/types/task_block_yaml.py create mode 100644 skyvern/client/types/task_block_yaml_data_schema.py create mode 100644 skyvern/client/types/task_v2block_yaml.py create mode 100644 skyvern/client/types/text_prompt_block_yaml.py create mode 100644 skyvern/client/types/upload_to_s3block_yaml.py create mode 100644 skyvern/client/types/url_block_yaml.py create mode 100644 skyvern/client/types/validation_block_yaml.py create mode 100644 skyvern/client/types/wait_block_yaml.py create mode 100644 skyvern/client/types/workflow_create_yaml_request.py create mode 100644 skyvern/client/types/workflow_definition_yaml.py create mode 100644 skyvern/client/types/workflow_definition_yaml_blocks_item.py create mode 100644 skyvern/client/types/workflow_definition_yaml_parameters_item.py create mode 100644 skyvern/client/types/workflow_parameter_yaml.py create mode 100644 skyvern/client/types/workflow_parameter_yaml_default_value.py create mode 100644 skyvern/client/types/workflow_request.py diff --git a/fern/openapi/skyvern_openapi.json b/fern/openapi/skyvern_openapi.json index 9447cce6..ed3f3cd9 100644 --- a/fern/openapi/skyvern_openapi.json +++ b/fern/openapi/skyvern_openapi.json @@ -28,8 +28,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } + }, + "description": "API key for authentication" }, { "name": "x-user-agent", @@ -46,22 +48,6 @@ ], "title": "X-User-Agent" } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } } ], "requestBody": { @@ -145,8 +131,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } + }, + "description": "API key for authentication" }, { "name": "x-max-steps-override", @@ -179,22 +167,6 @@ ], "title": "X-User-Agent" } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } } ], "requestBody": { @@ -284,24 +256,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -394,24 +352,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -472,24 +416,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "requestBody": { @@ -571,24 +501,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "requestBody": { @@ -670,24 +586,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -748,24 +650,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "requestBody": { @@ -837,24 +725,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -936,24 +810,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -1031,24 +891,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -1099,7 +945,7 @@ "Credentials" ], "summary": "Send TOTP (2FA, MFA) code to Skyvern", - "description": "Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern", + "description": "Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern. This endpoint stores the code in database so that Skyvern can use it while running tasks/workflows.", "operationId": "send_totp_code_v1_credentials_totp_post", "parameters": [ { @@ -1115,24 +961,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "requestBody": { @@ -1193,24 +1025,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "requestBody": { @@ -1265,11 +1083,11 @@ "code-samples": [ { "sdk": "python", - "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your_api_key\")\nawait skyvern.credentials.create_credential(\n name=\"Amazon Login\",\n credential_type=\"password\",\n credential={\"username\": \"user@example.com\", \"password\": \"myamazonpassword\"},\n)\n" + "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your_api_key\")\nawait skyvern.credentials.create_credential(\n name=\"My Credential\",\n credential_type=\"password\",\n credential={\"username\": \"username\", \"password\": \"password\"},\n)\n" }, { "sdk": "python", - "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your_api_key\")\nawait skyvern.credentials.create_credential(\n name=\"Amazon Login\",\n credential_type=\"credit_card\",\n credential={\n \"card_number\": \"4242424242424242\",\n \"card_cvv\": \"424\",\n \"card_exp_month\": \"12\",\n \"card_exp_year\": \"2028\",\n \"card_brand\": \"visa\",\n \"card_holder_name\": \"John Doe\",\n },\n)\n" + "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"your_api_key\")\nawait skyvern.credentials.create_credential(\n name=\"My Credit Card\",\n credential_type=\"credit_card\",\n credential={\n \"card_number\": \"4242424242424242\",\n \"card_cvv\": \"424\",\n \"card_exp_month\": \"12\",\n \"card_exp_year\": \"2028\",\n \"card_brand\": \"visa\",\n \"card_holder_name\": \"John Doe\",\n },\n)\n" } ] } @@ -1330,24 +1148,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -1427,24 +1231,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -1513,24 +1303,10 @@ "type": "null" } ], + "description": "API key for authentication", "title": "X-Api-Key" - } - }, - { - "name": "authorization", - "in": "header", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Authorization" - } + }, + "description": "API key for authentication" } ], "responses": { @@ -6774,6 +6550,21 @@ "title": "Recording Url", "description": "URL to the recording of the run" }, + "screenshot_urls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Screenshot Urls", + "description": "List of last n screenshot URLs in reverse chronological order - the first one the list is the latest screenshot." + }, "failure_reason": { "anyOf": [ { @@ -8836,6 +8627,21 @@ "title": "Recording Url", "description": "URL to the recording of the run" }, + "screenshot_urls": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "title": "Screenshot Urls", + "description": "List of last n screenshot URLs in reverse chronological order - the first one the list is the latest screenshot." + }, "failure_reason": { "anyOf": [ { diff --git a/pyproject.toml b/pyproject.toml index 25fed8f1..8075d6e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "skyvern" -version = "0.1.84" +version = "0.1.85" description = "" authors = ["Skyvern AI "] readme = "README.md" diff --git a/skyvern/client/__init__.py b/skyvern/client/__init__.py index e4070770..c8b48727 100644 --- a/skyvern/client/__init__.py +++ b/skyvern/client/__init__.py @@ -12,10 +12,15 @@ from .types import ( ActionBlockParametersItem_Credential, ActionBlockParametersItem_Output, ActionBlockParametersItem_Workflow, + ActionBlockYaml, AwsSecretParameter, + AwsSecretParameterYaml, BitwardenCreditCardDataParameter, + BitwardenCreditCardDataParameterYaml, BitwardenLoginCredentialParameter, + BitwardenLoginCredentialParameterYaml, BitwardenSensitiveInformationParameter, + BitwardenSensitiveInformationParameterYaml, BrowserSessionResponse, CodeBlock, CodeBlockParametersItem, @@ -27,6 +32,7 @@ from .types import ( CodeBlockParametersItem_Credential, CodeBlockParametersItem_Output, CodeBlockParametersItem_Workflow, + CodeBlockYaml, ContextParameter, ContextParameterSource, ContextParameterSource_AwsSecret, @@ -38,12 +44,15 @@ from .types import ( ContextParameterSource_Output, ContextParameterSource_Workflow, ContextParameterValue, + ContextParameterYaml, CredentialParameter, + CredentialParameterYaml, CredentialResponse, CredentialResponseCredential, CredentialType, CreditCardCredentialResponse, DownloadToS3Block, + DownloadToS3BlockYaml, ExtractionBlock, ExtractionBlockDataSchema, ExtractionBlockParametersItem, @@ -55,6 +64,8 @@ from .types import ( ExtractionBlockParametersItem_Credential, ExtractionBlockParametersItem_Output, ExtractionBlockParametersItem_Workflow, + ExtractionBlockYaml, + ExtractionBlockYamlDataSchema, FileDownloadBlock, FileDownloadBlockDataSchema, FileDownloadBlockParametersItem, @@ -66,11 +77,14 @@ from .types import ( FileDownloadBlockParametersItem_Credential, FileDownloadBlockParametersItem_Output, FileDownloadBlockParametersItem_Workflow, + FileDownloadBlockYaml, FileInfo, FileParserBlock, + FileParserBlockYaml, FileStorageType, FileType, FileUploadBlock, + FileUploadBlockYaml, ForLoopBlock, ForLoopBlockLoopBlocksItem, ForLoopBlockLoopBlocksItem_Action, @@ -101,6 +115,27 @@ from .types import ( ForLoopBlockLoopOver_Credential, ForLoopBlockLoopOver_Output, ForLoopBlockLoopOver_Workflow, + ForLoopBlockYaml, + ForLoopBlockYamlLoopBlocksItem, + ForLoopBlockYamlLoopBlocksItem_Action, + ForLoopBlockYamlLoopBlocksItem_Code, + ForLoopBlockYamlLoopBlocksItem_DownloadToS3, + ForLoopBlockYamlLoopBlocksItem_Extraction, + ForLoopBlockYamlLoopBlocksItem_FileDownload, + ForLoopBlockYamlLoopBlocksItem_FileUpload, + ForLoopBlockYamlLoopBlocksItem_FileUrlParser, + ForLoopBlockYamlLoopBlocksItem_ForLoop, + ForLoopBlockYamlLoopBlocksItem_GotoUrl, + ForLoopBlockYamlLoopBlocksItem_Login, + ForLoopBlockYamlLoopBlocksItem_Navigation, + ForLoopBlockYamlLoopBlocksItem_PdfParser, + ForLoopBlockYamlLoopBlocksItem_SendEmail, + ForLoopBlockYamlLoopBlocksItem_Task, + ForLoopBlockYamlLoopBlocksItem_TaskV2, + ForLoopBlockYamlLoopBlocksItem_TextPrompt, + ForLoopBlockYamlLoopBlocksItem_UploadToS3, + ForLoopBlockYamlLoopBlocksItem_Validation, + ForLoopBlockYamlLoopBlocksItem_Wait, HttpValidationError, LoginBlock, LoginBlockDataSchema, @@ -113,6 +148,7 @@ from .types import ( LoginBlockParametersItem_Credential, LoginBlockParametersItem_Output, LoginBlockParametersItem_Workflow, + LoginBlockYaml, NavigationBlock, NavigationBlockDataSchema, NavigationBlockParametersItem, @@ -124,15 +160,19 @@ from .types import ( NavigationBlockParametersItem_Credential, NavigationBlockParametersItem_Output, NavigationBlockParametersItem_Workflow, + NavigationBlockYaml, NonEmptyCreditCardCredential, NonEmptyPasswordCredential, OutputParameter, + OutputParameterYaml, PasswordCredentialResponse, PdfParserBlock, + PdfParserBlockYaml, ProxyLocation, RunEngine, RunStatus, SendEmailBlock, + SendEmailBlockYaml, TaskBlock, TaskBlockDataSchema, TaskBlockParametersItem, @@ -144,11 +184,14 @@ from .types import ( TaskBlockParametersItem_Credential, TaskBlockParametersItem_Output, TaskBlockParametersItem_Workflow, + TaskBlockYaml, + TaskBlockYamlDataSchema, TaskRunRequest, TaskRunRequestDataExtractionSchema, TaskRunResponse, TaskRunResponseOutput, TaskV2Block, + TaskV2BlockYaml, TextPromptBlock, TextPromptBlockParametersItem, TextPromptBlockParametersItem_AwsSecret, @@ -159,8 +202,10 @@ from .types import ( TextPromptBlockParametersItem_Credential, TextPromptBlockParametersItem_Output, TextPromptBlockParametersItem_Workflow, + TextPromptBlockYaml, TotpCode, UploadToS3Block, + UploadToS3BlockYaml, UrlBlock, UrlBlockDataSchema, UrlBlockParametersItem, @@ -172,6 +217,7 @@ from .types import ( UrlBlockParametersItem_Credential, UrlBlockParametersItem_Output, UrlBlockParametersItem_Workflow, + UrlBlockYaml, ValidationBlock, ValidationBlockDataSchema, ValidationBlockParametersItem, @@ -183,6 +229,7 @@ from .types import ( ValidationBlockParametersItem_Credential, ValidationBlockParametersItem_Output, ValidationBlockParametersItem_Workflow, + ValidationBlockYaml, ValidationError, ValidationErrorLocItem, WaitBlock, @@ -195,7 +242,9 @@ from .types import ( WaitBlockParametersItem_Credential, WaitBlockParametersItem_Output, WaitBlockParametersItem_Workflow, + WaitBlockYaml, Workflow, + WorkflowCreateYamlRequest, WorkflowDefinition, WorkflowDefinitionBlocksItem, WorkflowDefinitionBlocksItem_Action, @@ -226,9 +275,42 @@ from .types import ( WorkflowDefinitionParametersItem_Credential, WorkflowDefinitionParametersItem_Output, WorkflowDefinitionParametersItem_Workflow, + WorkflowDefinitionYaml, + WorkflowDefinitionYamlBlocksItem, + WorkflowDefinitionYamlBlocksItem_Action, + WorkflowDefinitionYamlBlocksItem_Code, + WorkflowDefinitionYamlBlocksItem_DownloadToS3, + WorkflowDefinitionYamlBlocksItem_Extraction, + WorkflowDefinitionYamlBlocksItem_FileDownload, + WorkflowDefinitionYamlBlocksItem_FileUpload, + WorkflowDefinitionYamlBlocksItem_FileUrlParser, + WorkflowDefinitionYamlBlocksItem_ForLoop, + WorkflowDefinitionYamlBlocksItem_GotoUrl, + WorkflowDefinitionYamlBlocksItem_Login, + WorkflowDefinitionYamlBlocksItem_Navigation, + WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_SendEmail, + WorkflowDefinitionYamlBlocksItem_Task, + WorkflowDefinitionYamlBlocksItem_TaskV2, + WorkflowDefinitionYamlBlocksItem_TextPrompt, + WorkflowDefinitionYamlBlocksItem_UploadToS3, + WorkflowDefinitionYamlBlocksItem_Validation, + WorkflowDefinitionYamlBlocksItem_Wait, + WorkflowDefinitionYamlParametersItem, + WorkflowDefinitionYamlParametersItem_AwsSecret, + WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData, + WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential, + WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation, + WorkflowDefinitionYamlParametersItem_Context, + WorkflowDefinitionYamlParametersItem_Credential, + WorkflowDefinitionYamlParametersItem_Output, + WorkflowDefinitionYamlParametersItem_Workflow, WorkflowParameter, WorkflowParameterDefaultValue, WorkflowParameterType, + WorkflowParameterYaml, + WorkflowParameterYamlDefaultValue, + WorkflowRequest, WorkflowRunRequest, WorkflowRunResponse, WorkflowRunResponseOutput, @@ -261,6 +343,7 @@ __all__ = [ "ActionBlockParametersItem_Credential", "ActionBlockParametersItem_Output", "ActionBlockParametersItem_Workflow", + "ActionBlockYaml", "AgentGetRunResponse", "AgentGetRunResponse_AnthropicCua", "AgentGetRunResponse_OpenaiCua", @@ -269,10 +352,14 @@ __all__ = [ "AgentGetRunResponse_WorkflowRun", "AsyncSkyvern", "AwsSecretParameter", + "AwsSecretParameterYaml", "BadRequestError", "BitwardenCreditCardDataParameter", + "BitwardenCreditCardDataParameterYaml", "BitwardenLoginCredentialParameter", + "BitwardenLoginCredentialParameterYaml", "BitwardenSensitiveInformationParameter", + "BitwardenSensitiveInformationParameterYaml", "BrowserSessionResponse", "CodeBlock", "CodeBlockParametersItem", @@ -284,6 +371,7 @@ __all__ = [ "CodeBlockParametersItem_Credential", "CodeBlockParametersItem_Output", "CodeBlockParametersItem_Workflow", + "CodeBlockYaml", "ContextParameter", "ContextParameterSource", "ContextParameterSource_AwsSecret", @@ -295,13 +383,16 @@ __all__ = [ "ContextParameterSource_Output", "ContextParameterSource_Workflow", "ContextParameterValue", + "ContextParameterYaml", "CreateCredentialRequestCredential", "CredentialParameter", + "CredentialParameterYaml", "CredentialResponse", "CredentialResponseCredential", "CredentialType", "CreditCardCredentialResponse", "DownloadToS3Block", + "DownloadToS3BlockYaml", "ExtractionBlock", "ExtractionBlockDataSchema", "ExtractionBlockParametersItem", @@ -313,6 +404,8 @@ __all__ = [ "ExtractionBlockParametersItem_Credential", "ExtractionBlockParametersItem_Output", "ExtractionBlockParametersItem_Workflow", + "ExtractionBlockYaml", + "ExtractionBlockYamlDataSchema", "FileDownloadBlock", "FileDownloadBlockDataSchema", "FileDownloadBlockParametersItem", @@ -324,11 +417,14 @@ __all__ = [ "FileDownloadBlockParametersItem_Credential", "FileDownloadBlockParametersItem_Output", "FileDownloadBlockParametersItem_Workflow", + "FileDownloadBlockYaml", "FileInfo", "FileParserBlock", + "FileParserBlockYaml", "FileStorageType", "FileType", "FileUploadBlock", + "FileUploadBlockYaml", "ForLoopBlock", "ForLoopBlockLoopBlocksItem", "ForLoopBlockLoopBlocksItem_Action", @@ -359,6 +455,27 @@ __all__ = [ "ForLoopBlockLoopOver_Credential", "ForLoopBlockLoopOver_Output", "ForLoopBlockLoopOver_Workflow", + "ForLoopBlockYaml", + "ForLoopBlockYamlLoopBlocksItem", + "ForLoopBlockYamlLoopBlocksItem_Action", + "ForLoopBlockYamlLoopBlocksItem_Code", + "ForLoopBlockYamlLoopBlocksItem_DownloadToS3", + "ForLoopBlockYamlLoopBlocksItem_Extraction", + "ForLoopBlockYamlLoopBlocksItem_FileDownload", + "ForLoopBlockYamlLoopBlocksItem_FileUpload", + "ForLoopBlockYamlLoopBlocksItem_FileUrlParser", + "ForLoopBlockYamlLoopBlocksItem_ForLoop", + "ForLoopBlockYamlLoopBlocksItem_GotoUrl", + "ForLoopBlockYamlLoopBlocksItem_Login", + "ForLoopBlockYamlLoopBlocksItem_Navigation", + "ForLoopBlockYamlLoopBlocksItem_PdfParser", + "ForLoopBlockYamlLoopBlocksItem_SendEmail", + "ForLoopBlockYamlLoopBlocksItem_Task", + "ForLoopBlockYamlLoopBlocksItem_TaskV2", + "ForLoopBlockYamlLoopBlocksItem_TextPrompt", + "ForLoopBlockYamlLoopBlocksItem_UploadToS3", + "ForLoopBlockYamlLoopBlocksItem_Validation", + "ForLoopBlockYamlLoopBlocksItem_Wait", "ForbiddenError", "HttpValidationError", "LoginBlock", @@ -372,6 +489,7 @@ __all__ = [ "LoginBlockParametersItem_Credential", "LoginBlockParametersItem_Output", "LoginBlockParametersItem_Workflow", + "LoginBlockYaml", "NavigationBlock", "NavigationBlockDataSchema", "NavigationBlockParametersItem", @@ -383,16 +501,20 @@ __all__ = [ "NavigationBlockParametersItem_Credential", "NavigationBlockParametersItem_Output", "NavigationBlockParametersItem_Workflow", + "NavigationBlockYaml", "NonEmptyCreditCardCredential", "NonEmptyPasswordCredential", "NotFoundError", "OutputParameter", + "OutputParameterYaml", "PasswordCredentialResponse", "PdfParserBlock", + "PdfParserBlockYaml", "ProxyLocation", "RunEngine", "RunStatus", "SendEmailBlock", + "SendEmailBlockYaml", "Skyvern", "SkyvernEnvironment", "TaskBlock", @@ -406,11 +528,14 @@ __all__ = [ "TaskBlockParametersItem_Credential", "TaskBlockParametersItem_Output", "TaskBlockParametersItem_Workflow", + "TaskBlockYaml", + "TaskBlockYamlDataSchema", "TaskRunRequest", "TaskRunRequestDataExtractionSchema", "TaskRunResponse", "TaskRunResponseOutput", "TaskV2Block", + "TaskV2BlockYaml", "TextPromptBlock", "TextPromptBlockParametersItem", "TextPromptBlockParametersItem_AwsSecret", @@ -421,9 +546,11 @@ __all__ = [ "TextPromptBlockParametersItem_Credential", "TextPromptBlockParametersItem_Output", "TextPromptBlockParametersItem_Workflow", + "TextPromptBlockYaml", "TotpCode", "UnprocessableEntityError", "UploadToS3Block", + "UploadToS3BlockYaml", "UrlBlock", "UrlBlockDataSchema", "UrlBlockParametersItem", @@ -435,6 +562,7 @@ __all__ = [ "UrlBlockParametersItem_Credential", "UrlBlockParametersItem_Output", "UrlBlockParametersItem_Workflow", + "UrlBlockYaml", "ValidationBlock", "ValidationBlockDataSchema", "ValidationBlockParametersItem", @@ -446,6 +574,7 @@ __all__ = [ "ValidationBlockParametersItem_Credential", "ValidationBlockParametersItem_Output", "ValidationBlockParametersItem_Workflow", + "ValidationBlockYaml", "ValidationError", "ValidationErrorLocItem", "WaitBlock", @@ -458,7 +587,9 @@ __all__ = [ "WaitBlockParametersItem_Credential", "WaitBlockParametersItem_Output", "WaitBlockParametersItem_Workflow", + "WaitBlockYaml", "Workflow", + "WorkflowCreateYamlRequest", "WorkflowDefinition", "WorkflowDefinitionBlocksItem", "WorkflowDefinitionBlocksItem_Action", @@ -489,9 +620,42 @@ __all__ = [ "WorkflowDefinitionParametersItem_Credential", "WorkflowDefinitionParametersItem_Output", "WorkflowDefinitionParametersItem_Workflow", + "WorkflowDefinitionYaml", + "WorkflowDefinitionYamlBlocksItem", + "WorkflowDefinitionYamlBlocksItem_Action", + "WorkflowDefinitionYamlBlocksItem_Code", + "WorkflowDefinitionYamlBlocksItem_DownloadToS3", + "WorkflowDefinitionYamlBlocksItem_Extraction", + "WorkflowDefinitionYamlBlocksItem_FileDownload", + "WorkflowDefinitionYamlBlocksItem_FileUpload", + "WorkflowDefinitionYamlBlocksItem_FileUrlParser", + "WorkflowDefinitionYamlBlocksItem_ForLoop", + "WorkflowDefinitionYamlBlocksItem_GotoUrl", + "WorkflowDefinitionYamlBlocksItem_Login", + "WorkflowDefinitionYamlBlocksItem_Navigation", + "WorkflowDefinitionYamlBlocksItem_PdfParser", + "WorkflowDefinitionYamlBlocksItem_SendEmail", + "WorkflowDefinitionYamlBlocksItem_Task", + "WorkflowDefinitionYamlBlocksItem_TaskV2", + "WorkflowDefinitionYamlBlocksItem_TextPrompt", + "WorkflowDefinitionYamlBlocksItem_UploadToS3", + "WorkflowDefinitionYamlBlocksItem_Validation", + "WorkflowDefinitionYamlBlocksItem_Wait", + "WorkflowDefinitionYamlParametersItem", + "WorkflowDefinitionYamlParametersItem_AwsSecret", + "WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData", + "WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential", + "WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation", + "WorkflowDefinitionYamlParametersItem_Context", + "WorkflowDefinitionYamlParametersItem_Credential", + "WorkflowDefinitionYamlParametersItem_Output", + "WorkflowDefinitionYamlParametersItem_Workflow", "WorkflowParameter", "WorkflowParameterDefaultValue", "WorkflowParameterType", + "WorkflowParameterYaml", + "WorkflowParameterYamlDefaultValue", + "WorkflowRequest", "WorkflowRunRequest", "WorkflowRunResponse", "WorkflowRunResponseOutput", diff --git a/skyvern/client/agent/client.py b/skyvern/client/agent/client.py index 8965c575..96c8ab53 100644 --- a/skyvern/client/agent/client.py +++ b/skyvern/client/agent/client.py @@ -17,7 +17,6 @@ from ..types.workflow_run_response import WorkflowRunResponse from .types.agent_get_run_response import AgentGetRunResponse from ..core.jsonable_encoder import jsonable_encoder from ..errors.not_found_error import NotFoundError -from ..types.workflow import Workflow from ..core.client_wrapper import AsyncClientWrapper # this is used as the default value for optional parameters @@ -111,7 +110,6 @@ class AgentClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.agent.run_task( prompt="prompt", @@ -243,7 +241,6 @@ class AgentClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.agent.run_workflow( workflow_id="wpid_123", @@ -329,7 +326,6 @@ class AgentClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.agent.get_run( run_id="tsk_123", @@ -399,7 +395,6 @@ class AgentClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.agent.cancel_run( run_id="run_id", @@ -434,64 +429,6 @@ class AgentClient: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - def update_workflow(self, workflow_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Workflow: - """ - Update a workflow definition - - Parameters - ---------- - workflow_id : str - The ID of the workflow to update. Workflow ID starts with `wpid_`. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - Workflow - Successfully updated workflow - - Examples - -------- - from skyvern import Skyvern - - client = Skyvern( - api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", - ) - client.agent.update_workflow( - workflow_id="wpid_123", - ) - """ - _response = self._client_wrapper.httpx_client.request( - f"v1/workflows/{jsonable_encoder(workflow_id)}", - method="POST", - request_options=request_options, - ) - try: - if 200 <= _response.status_code < 300: - return typing.cast( - Workflow, - parse_obj_as( - type_=Workflow, # type: ignore - object_=_response.json(), - ), - ) - if _response.status_code == 422: - raise UnprocessableEntityError( - 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, body=_response.text) - raise ApiError(status_code=_response.status_code, body=_response_json) - class AsyncAgentClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): @@ -582,7 +519,6 @@ class AsyncAgentClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -722,7 +658,6 @@ class AsyncAgentClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -818,7 +753,6 @@ class AsyncAgentClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -896,7 +830,6 @@ class AsyncAgentClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -936,71 +869,3 @@ class AsyncAgentClient: except JSONDecodeError: raise ApiError(status_code=_response.status_code, body=_response.text) raise ApiError(status_code=_response.status_code, body=_response_json) - - async def update_workflow( - self, workflow_id: str, *, request_options: typing.Optional[RequestOptions] = None - ) -> Workflow: - """ - Update a workflow definition - - Parameters - ---------- - workflow_id : str - The ID of the workflow to update. Workflow ID starts with `wpid_`. - - request_options : typing.Optional[RequestOptions] - Request-specific configuration. - - Returns - ------- - Workflow - Successfully updated workflow - - Examples - -------- - import asyncio - - from skyvern import AsyncSkyvern - - client = AsyncSkyvern( - api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", - ) - - - async def main() -> None: - await client.agent.update_workflow( - workflow_id="wpid_123", - ) - - - asyncio.run(main()) - """ - _response = await self._client_wrapper.httpx_client.request( - f"v1/workflows/{jsonable_encoder(workflow_id)}", - method="POST", - request_options=request_options, - ) - try: - if 200 <= _response.status_code < 300: - return typing.cast( - Workflow, - parse_obj_as( - type_=Workflow, # type: ignore - object_=_response.json(), - ), - ) - if _response.status_code == 422: - raise UnprocessableEntityError( - 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, body=_response.text) - raise ApiError(status_code=_response.status_code, body=_response_json) diff --git a/skyvern/client/agent/types/agent_get_run_response.py b/skyvern/client/agent/types/agent_get_run_response.py index e2609e12..471eac7b 100644 --- a/skyvern/client/agent/types/agent_get_run_response.py +++ b/skyvern/client/agent/types/agent_get_run_response.py @@ -21,6 +21,7 @@ class AgentGetRunResponse_TaskV1(UniversalBaseModel): output: typing.Optional[TaskRunResponseOutput] = None downloaded_files: typing.Optional[typing.List[FileInfo]] = None recording_url: typing.Optional[str] = None + screenshot_urls: typing.Optional[typing.List[str]] = None failure_reason: typing.Optional[str] = None created_at: dt.datetime modified_at: dt.datetime @@ -44,6 +45,7 @@ class AgentGetRunResponse_TaskV2(UniversalBaseModel): output: typing.Optional[TaskRunResponseOutput] = None downloaded_files: typing.Optional[typing.List[FileInfo]] = None recording_url: typing.Optional[str] = None + screenshot_urls: typing.Optional[typing.List[str]] = None failure_reason: typing.Optional[str] = None created_at: dt.datetime modified_at: dt.datetime @@ -67,6 +69,7 @@ class AgentGetRunResponse_OpenaiCua(UniversalBaseModel): output: typing.Optional[TaskRunResponseOutput] = None downloaded_files: typing.Optional[typing.List[FileInfo]] = None recording_url: typing.Optional[str] = None + screenshot_urls: typing.Optional[typing.List[str]] = None failure_reason: typing.Optional[str] = None created_at: dt.datetime modified_at: dt.datetime @@ -90,6 +93,7 @@ class AgentGetRunResponse_AnthropicCua(UniversalBaseModel): output: typing.Optional[TaskRunResponseOutput] = None downloaded_files: typing.Optional[typing.List[FileInfo]] = None recording_url: typing.Optional[str] = None + screenshot_urls: typing.Optional[typing.List[str]] = None failure_reason: typing.Optional[str] = None created_at: dt.datetime modified_at: dt.datetime @@ -113,6 +117,7 @@ class AgentGetRunResponse_WorkflowRun(UniversalBaseModel): output: typing.Optional[WorkflowRunResponseOutput] = None downloaded_files: typing.Optional[typing.List[FileInfo]] = None recording_url: typing.Optional[str] = None + screenshot_urls: typing.Optional[typing.List[str]] = None failure_reason: typing.Optional[str] = None created_at: dt.datetime modified_at: dt.datetime diff --git a/skyvern/client/browser_session/client.py b/skyvern/client/browser_session/client.py index 05ae2115..c8b87408 100644 --- a/skyvern/client/browser_session/client.py +++ b/skyvern/client/browser_session/client.py @@ -43,7 +43,6 @@ class BrowserSessionClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.browser_session.get_browser_sessions() """ @@ -111,7 +110,6 @@ class BrowserSessionClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.browser_session.create_browser_session() """ @@ -186,7 +184,6 @@ class BrowserSessionClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.browser_session.close_browser_session( browser_session_id="pbs_123456", @@ -256,7 +253,6 @@ class BrowserSessionClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.browser_session.get_browser_session( browser_session_id="pbs_123456", @@ -340,7 +336,6 @@ class AsyncBrowserSessionClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -416,7 +411,6 @@ class AsyncBrowserSessionClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -499,7 +493,6 @@ class AsyncBrowserSessionClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -577,7 +570,6 @@ class AsyncBrowserSessionClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) diff --git a/skyvern/client/client.py b/skyvern/client/client.py index a59c51a3..dc13ffb9 100644 --- a/skyvern/client/client.py +++ b/skyvern/client/client.py @@ -34,7 +34,6 @@ class Skyvern: api_key : typing.Optional[str] - authorization : typing.Optional[str] timeout : typing.Optional[float] The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced. @@ -50,7 +49,6 @@ class Skyvern: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) """ @@ -60,7 +58,6 @@ class Skyvern: base_url: typing.Optional[str] = None, environment: SkyvernEnvironment = SkyvernEnvironment.PRODUCTION, api_key: typing.Optional[str] = None, - authorization: typing.Optional[str] = None, timeout: typing.Optional[float] = None, follow_redirects: typing.Optional[bool] = True, httpx_client: typing.Optional[httpx.Client] = None, @@ -69,7 +66,6 @@ class Skyvern: self._client_wrapper = SyncClientWrapper( base_url=_get_base_url(base_url=base_url, environment=environment), api_key=api_key, - authorization=authorization, httpx_client=httpx_client if httpx_client is not None else httpx.Client(timeout=_defaulted_timeout, follow_redirects=follow_redirects) @@ -102,7 +98,6 @@ class AsyncSkyvern: api_key : typing.Optional[str] - authorization : typing.Optional[str] timeout : typing.Optional[float] The timeout to be used, in seconds, for requests. By default the timeout is 60 seconds, unless a custom httpx client is used, in which case this default is not enforced. @@ -118,7 +113,6 @@ class AsyncSkyvern: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) """ @@ -128,7 +122,6 @@ class AsyncSkyvern: base_url: typing.Optional[str] = None, environment: SkyvernEnvironment = SkyvernEnvironment.PRODUCTION, api_key: typing.Optional[str] = None, - authorization: typing.Optional[str] = None, timeout: typing.Optional[float] = None, follow_redirects: typing.Optional[bool] = True, httpx_client: typing.Optional[httpx.AsyncClient] = None, @@ -137,7 +130,6 @@ class AsyncSkyvern: self._client_wrapper = AsyncClientWrapper( base_url=_get_base_url(base_url=base_url, environment=environment), api_key=api_key, - authorization=authorization, httpx_client=httpx_client if httpx_client is not None else httpx.AsyncClient(timeout=_defaulted_timeout, follow_redirects=follow_redirects) diff --git a/skyvern/client/core/client_wrapper.py b/skyvern/client/core/client_wrapper.py index 518be9d7..76d052a3 100644 --- a/skyvern/client/core/client_wrapper.py +++ b/skyvern/client/core/client_wrapper.py @@ -7,16 +7,8 @@ from .http_client import AsyncHttpClient class BaseClientWrapper: - def __init__( - self, - *, - api_key: typing.Optional[str] = None, - authorization: typing.Optional[str] = None, - base_url: str, - timeout: typing.Optional[float] = None, - ): + def __init__(self, *, api_key: typing.Optional[str] = None, base_url: str, timeout: typing.Optional[float] = None): self._api_key = api_key - self._authorization = authorization self._base_url = base_url self._timeout = timeout @@ -28,8 +20,6 @@ class BaseClientWrapper: } if self._api_key is not None: headers["x-api-key"] = self._api_key - if self._authorization is not None: - headers["authorization"] = self._authorization return headers def get_base_url(self) -> str: @@ -44,12 +34,11 @@ class SyncClientWrapper(BaseClientWrapper): self, *, api_key: typing.Optional[str] = None, - authorization: typing.Optional[str] = None, base_url: str, timeout: typing.Optional[float] = None, httpx_client: httpx.Client, ): - super().__init__(api_key=api_key, authorization=authorization, base_url=base_url, timeout=timeout) + super().__init__(api_key=api_key, base_url=base_url, timeout=timeout) self.httpx_client = HttpClient( httpx_client=httpx_client, base_headers=self.get_headers, @@ -63,12 +52,11 @@ class AsyncClientWrapper(BaseClientWrapper): self, *, api_key: typing.Optional[str] = None, - authorization: typing.Optional[str] = None, base_url: str, timeout: typing.Optional[float] = None, httpx_client: httpx.AsyncClient, ): - super().__init__(api_key=api_key, authorization=authorization, base_url=base_url, timeout=timeout) + super().__init__(api_key=api_key, base_url=base_url, timeout=timeout) self.httpx_client = AsyncHttpClient( httpx_client=httpx_client, base_headers=self.get_headers, diff --git a/skyvern/client/credentials/client.py b/skyvern/client/credentials/client.py index c5a61c8e..2699d800 100644 --- a/skyvern/client/credentials/client.py +++ b/skyvern/client/credentials/client.py @@ -37,7 +37,7 @@ class CredentialsClient: request_options: typing.Optional[RequestOptions] = None, ) -> TotpCode: """ - Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern + Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern. This endpoint stores the code in database so that Skyvern can use it while running tasks/workflows. Parameters ---------- @@ -76,7 +76,6 @@ class CredentialsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.credentials.send_totp_code( totp_identifier="john.doe@example.com", @@ -157,7 +156,6 @@ class CredentialsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.credentials.get_credentials() """ @@ -230,7 +228,6 @@ class CredentialsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.credentials.create_credential( name="My Credential", @@ -304,7 +301,6 @@ class CredentialsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.credentials.delete_credential( credential_id="cred_1234567890", @@ -358,7 +354,6 @@ class CredentialsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.credentials.get_credential( credential_id="cred_1234567890", @@ -411,7 +406,7 @@ class AsyncCredentialsClient: request_options: typing.Optional[RequestOptions] = None, ) -> TotpCode: """ - Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern + Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern. This endpoint stores the code in database so that Skyvern can use it while running tasks/workflows. Parameters ---------- @@ -452,7 +447,6 @@ class AsyncCredentialsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -541,7 +535,6 @@ class AsyncCredentialsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -622,7 +615,6 @@ class AsyncCredentialsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -706,7 +698,6 @@ class AsyncCredentialsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -768,7 +759,6 @@ class AsyncCredentialsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) diff --git a/skyvern/client/types/__init__.py b/skyvern/client/types/__init__.py index 3239bf68..c6ef0a21 100644 --- a/skyvern/client/types/__init__.py +++ b/skyvern/client/types/__init__.py @@ -13,10 +13,15 @@ from .action_block_parameters_item import ( ActionBlockParametersItem_Output, ActionBlockParametersItem_Workflow, ) +from .action_block_yaml import ActionBlockYaml from .aws_secret_parameter import AwsSecretParameter +from .aws_secret_parameter_yaml import AwsSecretParameterYaml from .bitwarden_credit_card_data_parameter import BitwardenCreditCardDataParameter +from .bitwarden_credit_card_data_parameter_yaml import BitwardenCreditCardDataParameterYaml from .bitwarden_login_credential_parameter import BitwardenLoginCredentialParameter +from .bitwarden_login_credential_parameter_yaml import BitwardenLoginCredentialParameterYaml from .bitwarden_sensitive_information_parameter import BitwardenSensitiveInformationParameter +from .bitwarden_sensitive_information_parameter_yaml import BitwardenSensitiveInformationParameterYaml from .browser_session_response import BrowserSessionResponse from .code_block import CodeBlock from .code_block_parameters_item import ( @@ -30,6 +35,7 @@ from .code_block_parameters_item import ( CodeBlockParametersItem_Output, CodeBlockParametersItem_Workflow, ) +from .code_block_yaml import CodeBlockYaml from .context_parameter import ContextParameter from .context_parameter_source import ( ContextParameterSource, @@ -43,12 +49,15 @@ from .context_parameter_source import ( ContextParameterSource_Workflow, ) from .context_parameter_value import ContextParameterValue +from .context_parameter_yaml import ContextParameterYaml from .credential_parameter import CredentialParameter +from .credential_parameter_yaml import CredentialParameterYaml from .credential_response import CredentialResponse from .credential_response_credential import CredentialResponseCredential from .credential_type import CredentialType from .credit_card_credential_response import CreditCardCredentialResponse from .download_to_s3block import DownloadToS3Block +from .download_to_s3block_yaml import DownloadToS3BlockYaml from .extraction_block import ExtractionBlock from .extraction_block_data_schema import ExtractionBlockDataSchema from .extraction_block_parameters_item import ( @@ -62,6 +71,8 @@ from .extraction_block_parameters_item import ( ExtractionBlockParametersItem_Output, ExtractionBlockParametersItem_Workflow, ) +from .extraction_block_yaml import ExtractionBlockYaml +from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema from .file_download_block import FileDownloadBlock from .file_download_block_data_schema import FileDownloadBlockDataSchema from .file_download_block_parameters_item import ( @@ -75,11 +86,14 @@ from .file_download_block_parameters_item import ( FileDownloadBlockParametersItem_Output, FileDownloadBlockParametersItem_Workflow, ) +from .file_download_block_yaml import FileDownloadBlockYaml from .file_info import FileInfo from .file_parser_block import FileParserBlock +from .file_parser_block_yaml import FileParserBlockYaml from .file_storage_type import FileStorageType from .file_type import FileType from .file_upload_block import FileUploadBlock +from .file_upload_block_yaml import FileUploadBlockYaml from .for_loop_block import ForLoopBlock from .for_loop_block_loop_blocks_item import ( ForLoopBlockLoopBlocksItem, @@ -114,6 +128,29 @@ from .for_loop_block_loop_over import ( ForLoopBlockLoopOver_Output, ForLoopBlockLoopOver_Workflow, ) +from .for_loop_block_yaml import ForLoopBlockYaml +from .for_loop_block_yaml_loop_blocks_item import ( + ForLoopBlockYamlLoopBlocksItem, + ForLoopBlockYamlLoopBlocksItem_Action, + ForLoopBlockYamlLoopBlocksItem_Code, + ForLoopBlockYamlLoopBlocksItem_DownloadToS3, + ForLoopBlockYamlLoopBlocksItem_Extraction, + ForLoopBlockYamlLoopBlocksItem_FileDownload, + ForLoopBlockYamlLoopBlocksItem_FileUpload, + ForLoopBlockYamlLoopBlocksItem_FileUrlParser, + ForLoopBlockYamlLoopBlocksItem_ForLoop, + ForLoopBlockYamlLoopBlocksItem_GotoUrl, + ForLoopBlockYamlLoopBlocksItem_Login, + ForLoopBlockYamlLoopBlocksItem_Navigation, + ForLoopBlockYamlLoopBlocksItem_PdfParser, + ForLoopBlockYamlLoopBlocksItem_SendEmail, + ForLoopBlockYamlLoopBlocksItem_Task, + ForLoopBlockYamlLoopBlocksItem_TaskV2, + ForLoopBlockYamlLoopBlocksItem_TextPrompt, + ForLoopBlockYamlLoopBlocksItem_UploadToS3, + ForLoopBlockYamlLoopBlocksItem_Validation, + ForLoopBlockYamlLoopBlocksItem_Wait, +) from .http_validation_error import HttpValidationError from .login_block import LoginBlock from .login_block_data_schema import LoginBlockDataSchema @@ -128,6 +165,7 @@ from .login_block_parameters_item import ( LoginBlockParametersItem_Output, LoginBlockParametersItem_Workflow, ) +from .login_block_yaml import LoginBlockYaml from .navigation_block import NavigationBlock from .navigation_block_data_schema import NavigationBlockDataSchema from .navigation_block_parameters_item import ( @@ -141,15 +179,19 @@ from .navigation_block_parameters_item import ( NavigationBlockParametersItem_Output, NavigationBlockParametersItem_Workflow, ) +from .navigation_block_yaml import NavigationBlockYaml from .non_empty_credit_card_credential import NonEmptyCreditCardCredential from .non_empty_password_credential import NonEmptyPasswordCredential from .output_parameter import OutputParameter +from .output_parameter_yaml import OutputParameterYaml from .password_credential_response import PasswordCredentialResponse from .pdf_parser_block import PdfParserBlock +from .pdf_parser_block_yaml import PdfParserBlockYaml from .proxy_location import ProxyLocation from .run_engine import RunEngine from .run_status import RunStatus from .send_email_block import SendEmailBlock +from .send_email_block_yaml import SendEmailBlockYaml from .task_block import TaskBlock from .task_block_data_schema import TaskBlockDataSchema from .task_block_parameters_item import ( @@ -163,11 +205,14 @@ from .task_block_parameters_item import ( TaskBlockParametersItem_Output, TaskBlockParametersItem_Workflow, ) +from .task_block_yaml import TaskBlockYaml +from .task_block_yaml_data_schema import TaskBlockYamlDataSchema from .task_run_request import TaskRunRequest from .task_run_request_data_extraction_schema import TaskRunRequestDataExtractionSchema from .task_run_response import TaskRunResponse from .task_run_response_output import TaskRunResponseOutput from .task_v2block import TaskV2Block +from .task_v2block_yaml import TaskV2BlockYaml from .text_prompt_block import TextPromptBlock from .text_prompt_block_parameters_item import ( TextPromptBlockParametersItem, @@ -180,8 +225,10 @@ from .text_prompt_block_parameters_item import ( TextPromptBlockParametersItem_Output, TextPromptBlockParametersItem_Workflow, ) +from .text_prompt_block_yaml import TextPromptBlockYaml from .totp_code import TotpCode from .upload_to_s3block import UploadToS3Block +from .upload_to_s3block_yaml import UploadToS3BlockYaml from .url_block import UrlBlock from .url_block_data_schema import UrlBlockDataSchema from .url_block_parameters_item import ( @@ -195,6 +242,7 @@ from .url_block_parameters_item import ( UrlBlockParametersItem_Output, UrlBlockParametersItem_Workflow, ) +from .url_block_yaml import UrlBlockYaml from .validation_block import ValidationBlock from .validation_block_data_schema import ValidationBlockDataSchema from .validation_block_parameters_item import ( @@ -208,6 +256,7 @@ from .validation_block_parameters_item import ( ValidationBlockParametersItem_Output, ValidationBlockParametersItem_Workflow, ) +from .validation_block_yaml import ValidationBlockYaml from .validation_error import ValidationError from .validation_error_loc_item import ValidationErrorLocItem from .wait_block import WaitBlock @@ -222,7 +271,9 @@ from .wait_block_parameters_item import ( WaitBlockParametersItem_Output, WaitBlockParametersItem_Workflow, ) +from .wait_block_yaml import WaitBlockYaml from .workflow import Workflow +from .workflow_create_yaml_request import WorkflowCreateYamlRequest from .workflow_definition import WorkflowDefinition from .workflow_definition_blocks_item import ( WorkflowDefinitionBlocksItem, @@ -257,9 +308,46 @@ from .workflow_definition_parameters_item import ( WorkflowDefinitionParametersItem_Output, WorkflowDefinitionParametersItem_Workflow, ) +from .workflow_definition_yaml import WorkflowDefinitionYaml +from .workflow_definition_yaml_blocks_item import ( + WorkflowDefinitionYamlBlocksItem, + WorkflowDefinitionYamlBlocksItem_Action, + WorkflowDefinitionYamlBlocksItem_Code, + WorkflowDefinitionYamlBlocksItem_DownloadToS3, + WorkflowDefinitionYamlBlocksItem_Extraction, + WorkflowDefinitionYamlBlocksItem_FileDownload, + WorkflowDefinitionYamlBlocksItem_FileUpload, + WorkflowDefinitionYamlBlocksItem_FileUrlParser, + WorkflowDefinitionYamlBlocksItem_ForLoop, + WorkflowDefinitionYamlBlocksItem_GotoUrl, + WorkflowDefinitionYamlBlocksItem_Login, + WorkflowDefinitionYamlBlocksItem_Navigation, + WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_SendEmail, + WorkflowDefinitionYamlBlocksItem_Task, + WorkflowDefinitionYamlBlocksItem_TaskV2, + WorkflowDefinitionYamlBlocksItem_TextPrompt, + WorkflowDefinitionYamlBlocksItem_UploadToS3, + WorkflowDefinitionYamlBlocksItem_Validation, + WorkflowDefinitionYamlBlocksItem_Wait, +) +from .workflow_definition_yaml_parameters_item import ( + WorkflowDefinitionYamlParametersItem, + WorkflowDefinitionYamlParametersItem_AwsSecret, + WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData, + WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential, + WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation, + WorkflowDefinitionYamlParametersItem_Context, + WorkflowDefinitionYamlParametersItem_Credential, + WorkflowDefinitionYamlParametersItem_Output, + WorkflowDefinitionYamlParametersItem_Workflow, +) from .workflow_parameter import WorkflowParameter from .workflow_parameter_default_value import WorkflowParameterDefaultValue from .workflow_parameter_type import WorkflowParameterType +from .workflow_parameter_yaml import WorkflowParameterYaml +from .workflow_parameter_yaml_default_value import WorkflowParameterYamlDefaultValue +from .workflow_request import WorkflowRequest from .workflow_run_request import WorkflowRunRequest from .workflow_run_response import WorkflowRunResponse from .workflow_run_response_output import WorkflowRunResponseOutput @@ -277,10 +365,15 @@ __all__ = [ "ActionBlockParametersItem_Credential", "ActionBlockParametersItem_Output", "ActionBlockParametersItem_Workflow", + "ActionBlockYaml", "AwsSecretParameter", + "AwsSecretParameterYaml", "BitwardenCreditCardDataParameter", + "BitwardenCreditCardDataParameterYaml", "BitwardenLoginCredentialParameter", + "BitwardenLoginCredentialParameterYaml", "BitwardenSensitiveInformationParameter", + "BitwardenSensitiveInformationParameterYaml", "BrowserSessionResponse", "CodeBlock", "CodeBlockParametersItem", @@ -292,6 +385,7 @@ __all__ = [ "CodeBlockParametersItem_Credential", "CodeBlockParametersItem_Output", "CodeBlockParametersItem_Workflow", + "CodeBlockYaml", "ContextParameter", "ContextParameterSource", "ContextParameterSource_AwsSecret", @@ -303,12 +397,15 @@ __all__ = [ "ContextParameterSource_Output", "ContextParameterSource_Workflow", "ContextParameterValue", + "ContextParameterYaml", "CredentialParameter", + "CredentialParameterYaml", "CredentialResponse", "CredentialResponseCredential", "CredentialType", "CreditCardCredentialResponse", "DownloadToS3Block", + "DownloadToS3BlockYaml", "ExtractionBlock", "ExtractionBlockDataSchema", "ExtractionBlockParametersItem", @@ -320,6 +417,8 @@ __all__ = [ "ExtractionBlockParametersItem_Credential", "ExtractionBlockParametersItem_Output", "ExtractionBlockParametersItem_Workflow", + "ExtractionBlockYaml", + "ExtractionBlockYamlDataSchema", "FileDownloadBlock", "FileDownloadBlockDataSchema", "FileDownloadBlockParametersItem", @@ -331,11 +430,14 @@ __all__ = [ "FileDownloadBlockParametersItem_Credential", "FileDownloadBlockParametersItem_Output", "FileDownloadBlockParametersItem_Workflow", + "FileDownloadBlockYaml", "FileInfo", "FileParserBlock", + "FileParserBlockYaml", "FileStorageType", "FileType", "FileUploadBlock", + "FileUploadBlockYaml", "ForLoopBlock", "ForLoopBlockLoopBlocksItem", "ForLoopBlockLoopBlocksItem_Action", @@ -366,6 +468,27 @@ __all__ = [ "ForLoopBlockLoopOver_Credential", "ForLoopBlockLoopOver_Output", "ForLoopBlockLoopOver_Workflow", + "ForLoopBlockYaml", + "ForLoopBlockYamlLoopBlocksItem", + "ForLoopBlockYamlLoopBlocksItem_Action", + "ForLoopBlockYamlLoopBlocksItem_Code", + "ForLoopBlockYamlLoopBlocksItem_DownloadToS3", + "ForLoopBlockYamlLoopBlocksItem_Extraction", + "ForLoopBlockYamlLoopBlocksItem_FileDownload", + "ForLoopBlockYamlLoopBlocksItem_FileUpload", + "ForLoopBlockYamlLoopBlocksItem_FileUrlParser", + "ForLoopBlockYamlLoopBlocksItem_ForLoop", + "ForLoopBlockYamlLoopBlocksItem_GotoUrl", + "ForLoopBlockYamlLoopBlocksItem_Login", + "ForLoopBlockYamlLoopBlocksItem_Navigation", + "ForLoopBlockYamlLoopBlocksItem_PdfParser", + "ForLoopBlockYamlLoopBlocksItem_SendEmail", + "ForLoopBlockYamlLoopBlocksItem_Task", + "ForLoopBlockYamlLoopBlocksItem_TaskV2", + "ForLoopBlockYamlLoopBlocksItem_TextPrompt", + "ForLoopBlockYamlLoopBlocksItem_UploadToS3", + "ForLoopBlockYamlLoopBlocksItem_Validation", + "ForLoopBlockYamlLoopBlocksItem_Wait", "HttpValidationError", "LoginBlock", "LoginBlockDataSchema", @@ -378,6 +501,7 @@ __all__ = [ "LoginBlockParametersItem_Credential", "LoginBlockParametersItem_Output", "LoginBlockParametersItem_Workflow", + "LoginBlockYaml", "NavigationBlock", "NavigationBlockDataSchema", "NavigationBlockParametersItem", @@ -389,15 +513,19 @@ __all__ = [ "NavigationBlockParametersItem_Credential", "NavigationBlockParametersItem_Output", "NavigationBlockParametersItem_Workflow", + "NavigationBlockYaml", "NonEmptyCreditCardCredential", "NonEmptyPasswordCredential", "OutputParameter", + "OutputParameterYaml", "PasswordCredentialResponse", "PdfParserBlock", + "PdfParserBlockYaml", "ProxyLocation", "RunEngine", "RunStatus", "SendEmailBlock", + "SendEmailBlockYaml", "TaskBlock", "TaskBlockDataSchema", "TaskBlockParametersItem", @@ -409,11 +537,14 @@ __all__ = [ "TaskBlockParametersItem_Credential", "TaskBlockParametersItem_Output", "TaskBlockParametersItem_Workflow", + "TaskBlockYaml", + "TaskBlockYamlDataSchema", "TaskRunRequest", "TaskRunRequestDataExtractionSchema", "TaskRunResponse", "TaskRunResponseOutput", "TaskV2Block", + "TaskV2BlockYaml", "TextPromptBlock", "TextPromptBlockParametersItem", "TextPromptBlockParametersItem_AwsSecret", @@ -424,8 +555,10 @@ __all__ = [ "TextPromptBlockParametersItem_Credential", "TextPromptBlockParametersItem_Output", "TextPromptBlockParametersItem_Workflow", + "TextPromptBlockYaml", "TotpCode", "UploadToS3Block", + "UploadToS3BlockYaml", "UrlBlock", "UrlBlockDataSchema", "UrlBlockParametersItem", @@ -437,6 +570,7 @@ __all__ = [ "UrlBlockParametersItem_Credential", "UrlBlockParametersItem_Output", "UrlBlockParametersItem_Workflow", + "UrlBlockYaml", "ValidationBlock", "ValidationBlockDataSchema", "ValidationBlockParametersItem", @@ -448,6 +582,7 @@ __all__ = [ "ValidationBlockParametersItem_Credential", "ValidationBlockParametersItem_Output", "ValidationBlockParametersItem_Workflow", + "ValidationBlockYaml", "ValidationError", "ValidationErrorLocItem", "WaitBlock", @@ -460,7 +595,9 @@ __all__ = [ "WaitBlockParametersItem_Credential", "WaitBlockParametersItem_Output", "WaitBlockParametersItem_Workflow", + "WaitBlockYaml", "Workflow", + "WorkflowCreateYamlRequest", "WorkflowDefinition", "WorkflowDefinitionBlocksItem", "WorkflowDefinitionBlocksItem_Action", @@ -491,9 +628,42 @@ __all__ = [ "WorkflowDefinitionParametersItem_Credential", "WorkflowDefinitionParametersItem_Output", "WorkflowDefinitionParametersItem_Workflow", + "WorkflowDefinitionYaml", + "WorkflowDefinitionYamlBlocksItem", + "WorkflowDefinitionYamlBlocksItem_Action", + "WorkflowDefinitionYamlBlocksItem_Code", + "WorkflowDefinitionYamlBlocksItem_DownloadToS3", + "WorkflowDefinitionYamlBlocksItem_Extraction", + "WorkflowDefinitionYamlBlocksItem_FileDownload", + "WorkflowDefinitionYamlBlocksItem_FileUpload", + "WorkflowDefinitionYamlBlocksItem_FileUrlParser", + "WorkflowDefinitionYamlBlocksItem_ForLoop", + "WorkflowDefinitionYamlBlocksItem_GotoUrl", + "WorkflowDefinitionYamlBlocksItem_Login", + "WorkflowDefinitionYamlBlocksItem_Navigation", + "WorkflowDefinitionYamlBlocksItem_PdfParser", + "WorkflowDefinitionYamlBlocksItem_SendEmail", + "WorkflowDefinitionYamlBlocksItem_Task", + "WorkflowDefinitionYamlBlocksItem_TaskV2", + "WorkflowDefinitionYamlBlocksItem_TextPrompt", + "WorkflowDefinitionYamlBlocksItem_UploadToS3", + "WorkflowDefinitionYamlBlocksItem_Validation", + "WorkflowDefinitionYamlBlocksItem_Wait", + "WorkflowDefinitionYamlParametersItem", + "WorkflowDefinitionYamlParametersItem_AwsSecret", + "WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData", + "WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential", + "WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation", + "WorkflowDefinitionYamlParametersItem_Context", + "WorkflowDefinitionYamlParametersItem_Credential", + "WorkflowDefinitionYamlParametersItem_Output", + "WorkflowDefinitionYamlParametersItem_Workflow", "WorkflowParameter", "WorkflowParameterDefaultValue", "WorkflowParameterType", + "WorkflowParameterYaml", + "WorkflowParameterYamlDefaultValue", + "WorkflowRequest", "WorkflowRunRequest", "WorkflowRunResponse", "WorkflowRunResponseOutput", diff --git a/skyvern/client/types/action_block_yaml.py b/skyvern/client/types/action_block_yaml.py new file mode 100644 index 00000000..c15010a6 --- /dev/null +++ b/skyvern/client/types/action_block_yaml.py @@ -0,0 +1,31 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ActionBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/aws_secret_parameter_yaml.py b/skyvern/client/types/aws_secret_parameter_yaml.py new file mode 100644 index 00000000..b448c861 --- /dev/null +++ b/skyvern/client/types/aws_secret_parameter_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class AwsSecretParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + aws_key: str + + 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 diff --git a/skyvern/client/types/bitwarden_credit_card_data_parameter_yaml.py b/skyvern/client/types/bitwarden_credit_card_data_parameter_yaml.py new file mode 100644 index 00000000..d2c5e646 --- /dev/null +++ b/skyvern/client/types/bitwarden_credit_card_data_parameter_yaml.py @@ -0,0 +1,25 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class BitwardenCreditCardDataParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_item_id: str + + 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 diff --git a/skyvern/client/types/bitwarden_login_credential_parameter_yaml.py b/skyvern/client/types/bitwarden_login_credential_parameter_yaml.py new file mode 100644 index 00000000..dc375b9c --- /dev/null +++ b/skyvern/client/types/bitwarden_login_credential_parameter_yaml.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class BitwardenLoginCredentialParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + url_parameter_key: typing.Optional[str] = None + bitwarden_collection_id: typing.Optional[str] = None + bitwarden_item_id: typing.Optional[str] = None + + 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 diff --git a/skyvern/client/types/bitwarden_sensitive_information_parameter_yaml.py b/skyvern/client/types/bitwarden_sensitive_information_parameter_yaml.py new file mode 100644 index 00000000..58d9a27f --- /dev/null +++ b/skyvern/client/types/bitwarden_sensitive_information_parameter_yaml.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class BitwardenSensitiveInformationParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_identity_key: str + bitwarden_identity_fields: typing.List[str] + + 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 diff --git a/skyvern/client/types/code_block_yaml.py b/skyvern/client/types/code_block_yaml.py new file mode 100644 index 00000000..a75ca06d --- /dev/null +++ b/skyvern/client/types/code_block_yaml.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class CodeBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + code: str + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 diff --git a/skyvern/client/types/context_parameter_yaml.py b/skyvern/client/types/context_parameter_yaml.py new file mode 100644 index 00000000..bdf2d6ae --- /dev/null +++ b/skyvern/client/types/context_parameter_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ContextParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + source_parameter_key: str + + 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 diff --git a/skyvern/client/types/credential_parameter_yaml.py b/skyvern/client/types/credential_parameter_yaml.py new file mode 100644 index 00000000..9a2f8bfd --- /dev/null +++ b/skyvern/client/types/credential_parameter_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class CredentialParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + credential_id: str + + 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 diff --git a/skyvern/client/types/download_to_s3block_yaml.py b/skyvern/client/types/download_to_s3block_yaml.py new file mode 100644 index 00000000..c9010dae --- /dev/null +++ b/skyvern/client/types/download_to_s3block_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class DownloadToS3BlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 diff --git a/skyvern/client/types/extraction_block_yaml.py b/skyvern/client/types/extraction_block_yaml.py new file mode 100644 index 00000000..50e424f1 --- /dev/null +++ b/skyvern/client/types/extraction_block_yaml.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ExtractionBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + data_extraction_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + data_schema: typing.Optional[ExtractionBlockYamlDataSchema] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + cache_actions: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/extraction_block_yaml_data_schema.py b/skyvern/client/types/extraction_block_yaml_data_schema.py new file mode 100644 index 00000000..0b6373c0 --- /dev/null +++ b/skyvern/client/types/extraction_block_yaml_data_schema.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +ExtractionBlockYamlDataSchema = typing.Union[ + typing.Dict[str, typing.Optional[typing.Any]], typing.List[typing.Optional[typing.Any]] +] diff --git a/skyvern/client/types/file_download_block_yaml.py b/skyvern/client/types/file_download_block_yaml.py new file mode 100644 index 00000000..ab860113 --- /dev/null +++ b/skyvern/client/types/file_download_block_yaml.py @@ -0,0 +1,31 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class FileDownloadBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/file_parser_block_yaml.py b/skyvern/client/types/file_parser_block_yaml.py new file mode 100644 index 00000000..d08c09bf --- /dev/null +++ b/skyvern/client/types/file_parser_block_yaml.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .file_type import FileType +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class FileParserBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + file_type: FileType = "csv" + + 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 diff --git a/skyvern/client/types/file_upload_block_yaml.py b/skyvern/client/types/file_upload_block_yaml.py new file mode 100644 index 00000000..16b3f50c --- /dev/null +++ b/skyvern/client/types/file_upload_block_yaml.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .file_storage_type import FileStorageType +import typing_extensions +from ..core.serialization import FieldMetadata +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class FileUploadBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + storage_type: typing.Optional[FileStorageType] = None + s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None + aws_access_key_id: typing.Optional[str] = None + aws_secret_access_key: typing.Optional[str] = None + region_name: typing.Optional[str] = None + path: typing.Optional[str] = None + + 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 diff --git a/skyvern/client/types/for_loop_block_yaml.py b/skyvern/client/types/for_loop_block_yaml.py new file mode 100644 index 00000000..2beecd3a --- /dev/null +++ b/skyvern/client/types/for_loop_block_yaml.py @@ -0,0 +1,31 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic +from ..core.pydantic_utilities import update_forward_refs + + +class ForLoopBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] + loop_over_parameter_key: typing.Optional[str] = None + loop_variable_reference: typing.Optional[str] = None + complete_if_empty: typing.Optional[bool] = None + + 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 + + +from .for_loop_block_yaml_loop_blocks_item import ForLoopBlockYamlLoopBlocksItem # noqa: E402 + +update_forward_refs(ForLoopBlockYaml) diff --git a/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py b/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py new file mode 100644 index 00000000..3a7149cb --- /dev/null +++ b/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py @@ -0,0 +1,448 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .task_block_yaml_data_schema import TaskBlockYamlDataSchema +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic +from .file_storage_type import FileStorageType +import typing_extensions +from ..core.serialization import FieldMetadata +from .file_type import FileType +from .run_engine import RunEngine +from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema +from ..core.pydantic_utilities import update_forward_refs + + +class ForLoopBlockYamlLoopBlocksItem_Task(UniversalBaseModel): + block_type: typing.Literal["task"] = "task" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + data_extraction_goal: typing.Optional[str] = None + data_schema: typing.Optional[TaskBlockYamlDataSchema] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_ForLoop(UniversalBaseModel): + block_type: typing.Literal["for_loop"] = "for_loop" + label: str + continue_on_failure: typing.Optional[bool] = None + loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] + loop_over_parameter_key: typing.Optional[str] = None + loop_variable_reference: typing.Optional[str] = None + complete_if_empty: typing.Optional[bool] = None + + 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 + + +from .for_loop_block_yaml import ForLoopBlockYaml # noqa: E402 + + +class ForLoopBlockYamlLoopBlocksItem_Code(UniversalBaseModel): + block_type: typing.Literal["code"] = "code" + label: str + continue_on_failure: typing.Optional[bool] = None + code: str + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_TextPrompt(UniversalBaseModel): + block_type: typing.Literal["text_prompt"] = "text_prompt" + label: str + continue_on_failure: typing.Optional[bool] = None + llm_key: typing.Optional[str] = None + prompt: str + parameter_keys: typing.Optional[typing.List[str]] = None + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class ForLoopBlockYamlLoopBlocksItem_DownloadToS3(UniversalBaseModel): + block_type: typing.Literal["download_to_s3"] = "download_to_s3" + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_UploadToS3(UniversalBaseModel): + block_type: typing.Literal["upload_to_s3"] = "upload_to_s3" + label: str + continue_on_failure: typing.Optional[bool] = None + path: typing.Optional[str] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_FileUpload(UniversalBaseModel): + block_type: typing.Literal["file_upload"] = "file_upload" + label: str + continue_on_failure: typing.Optional[bool] = None + storage_type: typing.Optional[FileStorageType] = None + s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None + aws_access_key_id: typing.Optional[str] = None + aws_secret_access_key: typing.Optional[str] = None + region_name: typing.Optional[str] = None + path: typing.Optional[str] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_SendEmail(UniversalBaseModel): + block_type: typing.Literal["send_email"] = "send_email" + label: str + continue_on_failure: typing.Optional[bool] = None + smtp_host_secret_parameter_key: str + smtp_port_secret_parameter_key: str + smtp_username_secret_parameter_key: str + smtp_password_secret_parameter_key: str + sender: str + recipients: typing.List[str] + subject: str + body: str + file_attachments: typing.Optional[typing.List[str]] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_FileUrlParser(UniversalBaseModel): + block_type: typing.Literal["file_url_parser"] = "file_url_parser" + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + file_type: FileType = "csv" + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Validation(UniversalBaseModel): + block_type: typing.Literal["validation"] = "validation" + label: str + continue_on_failure: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Action(UniversalBaseModel): + block_type: typing.Literal["action"] = "action" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Navigation(UniversalBaseModel): + block_type: typing.Literal["navigation"] = "navigation" + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + engine: typing.Optional[RunEngine] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Extraction(UniversalBaseModel): + block_type: typing.Literal["extraction"] = "extraction" + label: str + continue_on_failure: typing.Optional[bool] = None + data_extraction_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + data_schema: typing.Optional[ExtractionBlockYamlDataSchema] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Login(UniversalBaseModel): + block_type: typing.Literal["login"] = "login" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_Wait(UniversalBaseModel): + block_type: typing.Literal["wait"] = "wait" + label: str + continue_on_failure: typing.Optional[bool] = None + wait_sec: typing.Optional[int] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_FileDownload(UniversalBaseModel): + block_type: typing.Literal["file_download"] = "file_download" + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_GotoUrl(UniversalBaseModel): + block_type: typing.Literal["goto_url"] = "goto_url" + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 + + +class ForLoopBlockYamlLoopBlocksItem_PdfParser(UniversalBaseModel): + block_type: typing.Literal["pdf_parser"] = "pdf_parser" + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class ForLoopBlockYamlLoopBlocksItem_TaskV2(UniversalBaseModel): + block_type: typing.Literal["task_v2"] = "task_v2" + label: str + continue_on_failure: typing.Optional[bool] = None + prompt: str + url: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + max_iterations: typing.Optional[int] = None + max_steps: typing.Optional[int] = None + + 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 + + +ForLoopBlockYamlLoopBlocksItem = typing.Union[ + ForLoopBlockYamlLoopBlocksItem_Task, + ForLoopBlockYamlLoopBlocksItem_ForLoop, + ForLoopBlockYamlLoopBlocksItem_Code, + ForLoopBlockYamlLoopBlocksItem_TextPrompt, + ForLoopBlockYamlLoopBlocksItem_DownloadToS3, + ForLoopBlockYamlLoopBlocksItem_UploadToS3, + ForLoopBlockYamlLoopBlocksItem_FileUpload, + ForLoopBlockYamlLoopBlocksItem_SendEmail, + ForLoopBlockYamlLoopBlocksItem_FileUrlParser, + ForLoopBlockYamlLoopBlocksItem_Validation, + ForLoopBlockYamlLoopBlocksItem_Action, + ForLoopBlockYamlLoopBlocksItem_Navigation, + ForLoopBlockYamlLoopBlocksItem_Extraction, + ForLoopBlockYamlLoopBlocksItem_Login, + ForLoopBlockYamlLoopBlocksItem_Wait, + ForLoopBlockYamlLoopBlocksItem_FileDownload, + ForLoopBlockYamlLoopBlocksItem_GotoUrl, + ForLoopBlockYamlLoopBlocksItem_PdfParser, + ForLoopBlockYamlLoopBlocksItem_TaskV2, +] +update_forward_refs(ForLoopBlockYamlLoopBlocksItem_ForLoop) diff --git a/skyvern/client/types/login_block_yaml.py b/skyvern/client/types/login_block_yaml.py new file mode 100644 index 00000000..e3406366 --- /dev/null +++ b/skyvern/client/types/login_block_yaml.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class LoginBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/navigation_block_yaml.py b/skyvern/client/types/navigation_block_yaml.py new file mode 100644 index 00000000..05215f43 --- /dev/null +++ b/skyvern/client/types/navigation_block_yaml.py @@ -0,0 +1,38 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .run_engine import RunEngine +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class NavigationBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + engine: typing.Optional[RunEngine] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/output_parameter_yaml.py b/skyvern/client/types/output_parameter_yaml.py new file mode 100644 index 00000000..15f041d2 --- /dev/null +++ b/skyvern/client/types/output_parameter_yaml.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class OutputParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + + 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 diff --git a/skyvern/client/types/pdf_parser_block_yaml.py b/skyvern/client/types/pdf_parser_block_yaml.py new file mode 100644 index 00000000..9b44bb5c --- /dev/null +++ b/skyvern/client/types/pdf_parser_block_yaml.py @@ -0,0 +1,22 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class PdfParserBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/send_email_block_yaml.py b/skyvern/client/types/send_email_block_yaml.py new file mode 100644 index 00000000..48c30354 --- /dev/null +++ b/skyvern/client/types/send_email_block_yaml.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class SendEmailBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + smtp_host_secret_parameter_key: str + smtp_port_secret_parameter_key: str + smtp_username_secret_parameter_key: str + smtp_password_secret_parameter_key: str + sender: str + recipients: typing.List[str] + subject: str + body: str + file_attachments: typing.Optional[typing.List[str]] = None + + 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 diff --git a/skyvern/client/types/task_block_yaml.py b/skyvern/client/types/task_block_yaml.py new file mode 100644 index 00000000..3ca6523e --- /dev/null +++ b/skyvern/client/types/task_block_yaml.py @@ -0,0 +1,39 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .task_block_yaml_data_schema import TaskBlockYamlDataSchema +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class TaskBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + data_extraction_goal: typing.Optional[str] = None + data_schema: typing.Optional[TaskBlockYamlDataSchema] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 diff --git a/skyvern/client/types/task_block_yaml_data_schema.py b/skyvern/client/types/task_block_yaml_data_schema.py new file mode 100644 index 00000000..4a4720f4 --- /dev/null +++ b/skyvern/client/types/task_block_yaml_data_schema.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +TaskBlockYamlDataSchema = typing.Union[ + typing.Dict[str, typing.Optional[typing.Any]], typing.List[typing.Optional[typing.Any]] +] diff --git a/skyvern/client/types/task_run_response.py b/skyvern/client/types/task_run_response.py index 684a041b..d8ed2140 100644 --- a/skyvern/client/types/task_run_response.py +++ b/skyvern/client/types/task_run_response.py @@ -37,6 +37,11 @@ class TaskRunResponse(UniversalBaseModel): URL to the recording of the run """ + screenshot_urls: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of last n screenshot URLs in reverse chronological order - the first one the list is the latest screenshot. + """ + failure_reason: typing.Optional[str] = pydantic.Field(default=None) """ Reason for failure if the run failed or terminated diff --git a/skyvern/client/types/task_v2block_yaml.py b/skyvern/client/types/task_v2block_yaml.py new file mode 100644 index 00000000..251d500a --- /dev/null +++ b/skyvern/client/types/task_v2block_yaml.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class TaskV2BlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + prompt: str + url: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + max_iterations: typing.Optional[int] = None + max_steps: typing.Optional[int] = None + + 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 diff --git a/skyvern/client/types/text_prompt_block_yaml.py b/skyvern/client/types/text_prompt_block_yaml.py new file mode 100644 index 00000000..2b56fbb9 --- /dev/null +++ b/skyvern/client/types/text_prompt_block_yaml.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class TextPromptBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + llm_key: typing.Optional[str] = None + prompt: str + parameter_keys: typing.Optional[typing.List[str]] = None + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/upload_to_s3block_yaml.py b/skyvern/client/types/upload_to_s3block_yaml.py new file mode 100644 index 00000000..5c139d33 --- /dev/null +++ b/skyvern/client/types/upload_to_s3block_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class UploadToS3BlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + path: typing.Optional[str] = None + + 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 diff --git a/skyvern/client/types/url_block_yaml.py b/skyvern/client/types/url_block_yaml.py new file mode 100644 index 00000000..63630e76 --- /dev/null +++ b/skyvern/client/types/url_block_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class UrlBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 diff --git a/skyvern/client/types/validation_block_yaml.py b/skyvern/client/types/validation_block_yaml.py new file mode 100644 index 00000000..fe7a71f2 --- /dev/null +++ b/skyvern/client/types/validation_block_yaml.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class ValidationBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 diff --git a/skyvern/client/types/wait_block_yaml.py b/skyvern/client/types/wait_block_yaml.py new file mode 100644 index 00000000..91c20285 --- /dev/null +++ b/skyvern/client/types/wait_block_yaml.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class WaitBlockYaml(UniversalBaseModel): + label: str + continue_on_failure: typing.Optional[bool] = None + wait_sec: typing.Optional[int] = None + + 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 diff --git a/skyvern/client/types/workflow_create_yaml_request.py b/skyvern/client/types/workflow_create_yaml_request.py new file mode 100644 index 00000000..306bc4c5 --- /dev/null +++ b/skyvern/client/types/workflow_create_yaml_request.py @@ -0,0 +1,32 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +from .for_loop_block_yaml import ForLoopBlockYaml +import typing +from .proxy_location import ProxyLocation +from .workflow_definition_yaml import WorkflowDefinitionYaml +from .workflow_status import WorkflowStatus +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class WorkflowCreateYamlRequest(UniversalBaseModel): + title: str + description: typing.Optional[str] = None + proxy_location: typing.Optional[ProxyLocation] = None + webhook_callback_url: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + persist_browser_session: typing.Optional[bool] = None + workflow_definition: WorkflowDefinitionYaml + is_saved_task: typing.Optional[bool] = None + status: typing.Optional[WorkflowStatus] = None + + 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 diff --git a/skyvern/client/types/workflow_definition_yaml.py b/skyvern/client/types/workflow_definition_yaml.py new file mode 100644 index 00000000..7e93261f --- /dev/null +++ b/skyvern/client/types/workflow_definition_yaml.py @@ -0,0 +1,23 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +from .for_loop_block_yaml import ForLoopBlockYaml +import typing +from .workflow_definition_yaml_parameters_item import WorkflowDefinitionYamlParametersItem +from .workflow_definition_yaml_blocks_item import WorkflowDefinitionYamlBlocksItem +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class WorkflowDefinitionYaml(UniversalBaseModel): + parameters: typing.List[WorkflowDefinitionYamlParametersItem] + blocks: typing.List[WorkflowDefinitionYamlBlocksItem] + + 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 diff --git a/skyvern/client/types/workflow_definition_yaml_blocks_item.py b/skyvern/client/types/workflow_definition_yaml_blocks_item.py new file mode 100644 index 00000000..62787102 --- /dev/null +++ b/skyvern/client/types/workflow_definition_yaml_blocks_item.py @@ -0,0 +1,449 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic +from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema +from .file_storage_type import FileStorageType +import typing_extensions +from ..core.serialization import FieldMetadata +from .file_type import FileType +from .run_engine import RunEngine +from .task_block_yaml_data_schema import TaskBlockYamlDataSchema +from ..core.pydantic_utilities import update_forward_refs + + +class WorkflowDefinitionYamlBlocksItem_Action(UniversalBaseModel): + block_type: typing.Literal["action"] = "action" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Code(UniversalBaseModel): + block_type: typing.Literal["code"] = "code" + label: str + continue_on_failure: typing.Optional[bool] = None + code: str + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_DownloadToS3(UniversalBaseModel): + block_type: typing.Literal["download_to_s3"] = "download_to_s3" + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Extraction(UniversalBaseModel): + block_type: typing.Literal["extraction"] = "extraction" + label: str + continue_on_failure: typing.Optional[bool] = None + data_extraction_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + data_schema: typing.Optional[ExtractionBlockYamlDataSchema] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_FileDownload(UniversalBaseModel): + block_type: typing.Literal["file_download"] = "file_download" + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_FileUpload(UniversalBaseModel): + block_type: typing.Literal["file_upload"] = "file_upload" + label: str + continue_on_failure: typing.Optional[bool] = None + storage_type: typing.Optional[FileStorageType] = None + s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None + aws_access_key_id: typing.Optional[str] = None + aws_secret_access_key: typing.Optional[str] = None + region_name: typing.Optional[str] = None + path: typing.Optional[str] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_FileUrlParser(UniversalBaseModel): + block_type: typing.Literal["file_url_parser"] = "file_url_parser" + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + file_type: FileType = "csv" + + 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 + + +class WorkflowDefinitionYamlBlocksItem_ForLoop(UniversalBaseModel): + block_type: typing.Literal["for_loop"] = "for_loop" + label: str + continue_on_failure: typing.Optional[bool] = None + loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] + loop_over_parameter_key: typing.Optional[str] = None + loop_variable_reference: typing.Optional[str] = None + complete_if_empty: typing.Optional[bool] = None + + 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 + + +from .for_loop_block_yaml import ForLoopBlockYaml # noqa: E402 +from .for_loop_block_yaml_loop_blocks_item import ForLoopBlockYamlLoopBlocksItem # noqa: E402 + + +class WorkflowDefinitionYamlBlocksItem_GotoUrl(UniversalBaseModel): + block_type: typing.Literal["goto_url"] = "goto_url" + label: str + continue_on_failure: typing.Optional[bool] = None + url: str + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Login(UniversalBaseModel): + block_type: typing.Literal["login"] = "login" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Navigation(UniversalBaseModel): + block_type: typing.Literal["navigation"] = "navigation" + label: str + continue_on_failure: typing.Optional[bool] = None + navigation_goal: str + url: typing.Optional[str] = None + title: typing.Optional[str] = None + engine: typing.Optional[RunEngine] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_PdfParser(UniversalBaseModel): + block_type: typing.Literal["pdf_parser"] = "pdf_parser" + label: str + continue_on_failure: typing.Optional[bool] = None + file_url: str + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class WorkflowDefinitionYamlBlocksItem_SendEmail(UniversalBaseModel): + block_type: typing.Literal["send_email"] = "send_email" + label: str + continue_on_failure: typing.Optional[bool] = None + smtp_host_secret_parameter_key: str + smtp_port_secret_parameter_key: str + smtp_username_secret_parameter_key: str + smtp_password_secret_parameter_key: str + sender: str + recipients: typing.List[str] + subject: str + body: str + file_attachments: typing.Optional[typing.List[str]] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Task(UniversalBaseModel): + block_type: typing.Literal["task"] = "task" + label: str + continue_on_failure: typing.Optional[bool] = None + url: typing.Optional[str] = None + title: typing.Optional[str] = None + navigation_goal: typing.Optional[str] = None + data_extraction_goal: typing.Optional[str] = None + data_schema: typing.Optional[TaskBlockYamlDataSchema] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + max_retries: typing.Optional[int] = None + max_steps_per_run: typing.Optional[int] = None + parameter_keys: typing.Optional[typing.List[str]] = None + complete_on_download: typing.Optional[bool] = None + download_suffix: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + cache_actions: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + complete_verification: typing.Optional[bool] = None + include_action_history_in_verification: typing.Optional[bool] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_TaskV2(UniversalBaseModel): + block_type: typing.Literal["task_v2"] = "task_v2" + label: str + continue_on_failure: typing.Optional[bool] = None + prompt: str + url: typing.Optional[str] = None + totp_verification_url: typing.Optional[str] = None + totp_identifier: typing.Optional[str] = None + max_iterations: typing.Optional[int] = None + max_steps: typing.Optional[int] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_TextPrompt(UniversalBaseModel): + block_type: typing.Literal["text_prompt"] = "text_prompt" + label: str + continue_on_failure: typing.Optional[bool] = None + llm_key: typing.Optional[str] = None + prompt: str + parameter_keys: typing.Optional[typing.List[str]] = None + json_schema: 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 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class WorkflowDefinitionYamlBlocksItem_UploadToS3(UniversalBaseModel): + block_type: typing.Literal["upload_to_s3"] = "upload_to_s3" + label: str + continue_on_failure: typing.Optional[bool] = None + path: typing.Optional[str] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Validation(UniversalBaseModel): + block_type: typing.Literal["validation"] = "validation" + label: str + continue_on_failure: typing.Optional[bool] = None + complete_criterion: typing.Optional[str] = None + terminate_criterion: typing.Optional[str] = None + error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + 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 + + +class WorkflowDefinitionYamlBlocksItem_Wait(UniversalBaseModel): + block_type: typing.Literal["wait"] = "wait" + label: str + continue_on_failure: typing.Optional[bool] = None + wait_sec: typing.Optional[int] = None + + 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 + + +WorkflowDefinitionYamlBlocksItem = typing.Union[ + WorkflowDefinitionYamlBlocksItem_Action, + WorkflowDefinitionYamlBlocksItem_Code, + WorkflowDefinitionYamlBlocksItem_DownloadToS3, + WorkflowDefinitionYamlBlocksItem_Extraction, + WorkflowDefinitionYamlBlocksItem_FileDownload, + WorkflowDefinitionYamlBlocksItem_FileUpload, + WorkflowDefinitionYamlBlocksItem_FileUrlParser, + WorkflowDefinitionYamlBlocksItem_ForLoop, + WorkflowDefinitionYamlBlocksItem_GotoUrl, + WorkflowDefinitionYamlBlocksItem_Login, + WorkflowDefinitionYamlBlocksItem_Navigation, + WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_SendEmail, + WorkflowDefinitionYamlBlocksItem_Task, + WorkflowDefinitionYamlBlocksItem_TaskV2, + WorkflowDefinitionYamlBlocksItem_TextPrompt, + WorkflowDefinitionYamlBlocksItem_UploadToS3, + WorkflowDefinitionYamlBlocksItem_Validation, + WorkflowDefinitionYamlBlocksItem_Wait, +] +update_forward_refs(WorkflowDefinitionYamlBlocksItem_ForLoop) diff --git a/skyvern/client/types/workflow_definition_yaml_parameters_item.py b/skyvern/client/types/workflow_definition_yaml_parameters_item.py new file mode 100644 index 00000000..33bd969f --- /dev/null +++ b/skyvern/client/types/workflow_definition_yaml_parameters_item.py @@ -0,0 +1,163 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic +from .workflow_parameter_type import WorkflowParameterType +from .workflow_parameter_yaml_default_value import WorkflowParameterYamlDefaultValue + + +class WorkflowDefinitionYamlParametersItem_AwsSecret(UniversalBaseModel): + parameter_type: typing.Literal["aws_secret"] = "aws_secret" + key: str + description: typing.Optional[str] = None + aws_key: str + + 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 + + +class WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_credit_card_data"] = "bitwarden_credit_card_data" + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_item_id: str + + 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 + + +class WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_login_credential"] = "bitwarden_login_credential" + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + url_parameter_key: typing.Optional[str] = None + bitwarden_collection_id: typing.Optional[str] = None + bitwarden_item_id: typing.Optional[str] = None + + 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 + + +class WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_sensitive_information"] = "bitwarden_sensitive_information" + key: str + description: typing.Optional[str] = None + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_identity_key: str + bitwarden_identity_fields: typing.List[str] + + 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 + + +class WorkflowDefinitionYamlParametersItem_Context(UniversalBaseModel): + parameter_type: typing.Literal["context"] = "context" + key: str + description: typing.Optional[str] = None + source_parameter_key: str + + 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 + + +class WorkflowDefinitionYamlParametersItem_Credential(UniversalBaseModel): + parameter_type: typing.Literal["credential"] = "credential" + key: str + description: typing.Optional[str] = None + credential_id: str + + 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 + + +class WorkflowDefinitionYamlParametersItem_Output(UniversalBaseModel): + parameter_type: typing.Literal["output"] = "output" + key: str + description: typing.Optional[str] = None + + 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 + + +class WorkflowDefinitionYamlParametersItem_Workflow(UniversalBaseModel): + parameter_type: typing.Literal["workflow"] = "workflow" + key: str + description: typing.Optional[str] = None + workflow_parameter_type: WorkflowParameterType + default_value: typing.Optional[WorkflowParameterYamlDefaultValue] = None + + 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 + + +WorkflowDefinitionYamlParametersItem = typing.Union[ + WorkflowDefinitionYamlParametersItem_AwsSecret, + WorkflowDefinitionYamlParametersItem_BitwardenCreditCardData, + WorkflowDefinitionYamlParametersItem_BitwardenLoginCredential, + WorkflowDefinitionYamlParametersItem_BitwardenSensitiveInformation, + WorkflowDefinitionYamlParametersItem_Context, + WorkflowDefinitionYamlParametersItem_Credential, + WorkflowDefinitionYamlParametersItem_Output, + WorkflowDefinitionYamlParametersItem_Workflow, +] diff --git a/skyvern/client/types/workflow_parameter_yaml.py b/skyvern/client/types/workflow_parameter_yaml.py new file mode 100644 index 00000000..0a781161 --- /dev/null +++ b/skyvern/client/types/workflow_parameter_yaml.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +import typing +from .workflow_parameter_type import WorkflowParameterType +from .workflow_parameter_yaml_default_value import WorkflowParameterYamlDefaultValue +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +import pydantic + + +class WorkflowParameterYaml(UniversalBaseModel): + key: str + description: typing.Optional[str] = None + workflow_parameter_type: WorkflowParameterType + default_value: typing.Optional[WorkflowParameterYamlDefaultValue] = None + + 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 diff --git a/skyvern/client/types/workflow_parameter_yaml_default_value.py b/skyvern/client/types/workflow_parameter_yaml_default_value.py new file mode 100644 index 00000000..ecebd926 --- /dev/null +++ b/skyvern/client/types/workflow_parameter_yaml_default_value.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +WorkflowParameterYamlDefaultValue = typing.Union[ + str, int, float, bool, typing.Dict[str, typing.Optional[typing.Any]], typing.List[typing.Optional[typing.Any]] +] diff --git a/skyvern/client/types/workflow_request.py b/skyvern/client/types/workflow_request.py new file mode 100644 index 00000000..3bccd4fa --- /dev/null +++ b/skyvern/client/types/workflow_request.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +from ..core.pydantic_utilities import UniversalBaseModel +from .for_loop_block_yaml import ForLoopBlockYaml +import typing +from .workflow_create_yaml_request import WorkflowCreateYamlRequest +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 + + +class WorkflowRequest(UniversalBaseModel): + json_definition: typing.Optional[WorkflowCreateYamlRequest] = pydantic.Field(default=None) + """ + Workflow definition in JSON format + """ + + yaml_definition: typing.Optional[str] = pydantic.Field(default=None) + """ + Workflow definition in YAML format + """ + + 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 diff --git a/skyvern/client/types/workflow_run_response.py b/skyvern/client/types/workflow_run_response.py index 0024e121..e8cd407d 100644 --- a/skyvern/client/types/workflow_run_response.py +++ b/skyvern/client/types/workflow_run_response.py @@ -37,6 +37,11 @@ class WorkflowRunResponse(UniversalBaseModel): URL to the recording of the run """ + screenshot_urls: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of last n screenshot URLs in reverse chronological order - the first one the list is the latest screenshot. + """ + failure_reason: typing.Optional[str] = pydantic.Field(default=None) """ Reason for failure if the run failed or terminated diff --git a/skyvern/client/workflows/client.py b/skyvern/client/workflows/client.py index 1bc6655d..b3f7be8b 100644 --- a/skyvern/client/workflows/client.py +++ b/skyvern/client/workflows/client.py @@ -1,9 +1,11 @@ # This file was auto-generated by Fern from our API Definition. -from ..core.client_wrapper import SyncClientWrapper import typing +from ..core.client_wrapper import SyncClientWrapper +from ..types.workflow_create_yaml_request import WorkflowCreateYamlRequest from ..core.request_options import RequestOptions from ..types.workflow import Workflow +from ..core.serialization import convert_and_respect_annotation_metadata from ..core.pydantic_utilities import parse_obj_as from ..errors.unprocessable_entity_error import UnprocessableEntityError from json.decoder import JSONDecodeError @@ -11,17 +13,32 @@ from ..core.api_error import ApiError from ..core.jsonable_encoder import jsonable_encoder from ..core.client_wrapper import AsyncClientWrapper +# this is used as the default value for optional parameters +OMIT = typing.cast(typing.Any, ...) + class WorkflowsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper - def create_workflow(self, *, request_options: typing.Optional[RequestOptions] = None) -> Workflow: + def create_workflow( + self, + *, + json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT, + yaml_definition: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> Workflow: """ - Create a new workflow + Create a new workflow definition Parameters ---------- + json_definition : typing.Optional[WorkflowCreateYamlRequest] + Workflow definition in JSON format + + yaml_definition : typing.Optional[str] + Workflow definition in YAML format + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -36,14 +53,97 @@ class WorkflowsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.workflows.create_workflow() """ _response = self._client_wrapper.httpx_client.request( "v1/workflows", method="POST", + json={ + "json_definition": convert_and_respect_annotation_metadata( + object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write" + ), + "yaml_definition": yaml_definition, + }, request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return typing.cast( + Workflow, + parse_obj_as( + type_=Workflow, # type: ignore + object_=_response.json(), + ), + ) + if _response.status_code == 422: + raise UnprocessableEntityError( + 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, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + def update_workflow( + self, + workflow_id: str, + *, + json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT, + yaml_definition: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> Workflow: + """ + Update a workflow definition + + Parameters + ---------- + workflow_id : str + The ID of the workflow to update. Workflow ID starts with `wpid_`. + + json_definition : typing.Optional[WorkflowCreateYamlRequest] + Workflow definition in JSON format + + yaml_definition : typing.Optional[str] + Workflow definition in YAML format + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + Workflow + Successfully updated workflow + + Examples + -------- + from skyvern import Skyvern + + client = Skyvern( + api_key="YOUR_API_KEY", + ) + client.workflows.update_workflow( + workflow_id="wpid_123", + ) + """ + _response = self._client_wrapper.httpx_client.request( + f"v1/workflows/{jsonable_encoder(workflow_id)}", + method="POST", + json={ + "json_definition": convert_and_respect_annotation_metadata( + object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write" + ), + "yaml_definition": yaml_definition, + }, + request_options=request_options, + omit=OMIT, ) try: if 200 <= _response.status_code < 300: @@ -94,7 +194,6 @@ class WorkflowsClient: client = Skyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) client.workflows.delete_workflow( workflow_id="wpid_123", @@ -134,12 +233,24 @@ class AsyncWorkflowsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper - async def create_workflow(self, *, request_options: typing.Optional[RequestOptions] = None) -> Workflow: + async def create_workflow( + self, + *, + json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT, + yaml_definition: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> Workflow: """ - Create a new workflow + Create a new workflow definition Parameters ---------- + json_definition : typing.Optional[WorkflowCreateYamlRequest] + Workflow definition in JSON format + + yaml_definition : typing.Optional[str] + Workflow definition in YAML format + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -156,7 +267,6 @@ class AsyncWorkflowsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", ) @@ -169,7 +279,99 @@ class AsyncWorkflowsClient: _response = await self._client_wrapper.httpx_client.request( "v1/workflows", method="POST", + json={ + "json_definition": convert_and_respect_annotation_metadata( + object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write" + ), + "yaml_definition": yaml_definition, + }, request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + return typing.cast( + Workflow, + parse_obj_as( + type_=Workflow, # type: ignore + object_=_response.json(), + ), + ) + if _response.status_code == 422: + raise UnprocessableEntityError( + 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, body=_response.text) + raise ApiError(status_code=_response.status_code, body=_response_json) + + async def update_workflow( + self, + workflow_id: str, + *, + json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT, + yaml_definition: typing.Optional[str] = OMIT, + request_options: typing.Optional[RequestOptions] = None, + ) -> Workflow: + """ + Update a workflow definition + + Parameters + ---------- + workflow_id : str + The ID of the workflow to update. Workflow ID starts with `wpid_`. + + json_definition : typing.Optional[WorkflowCreateYamlRequest] + Workflow definition in JSON format + + yaml_definition : typing.Optional[str] + Workflow definition in YAML format + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + Workflow + Successfully updated workflow + + Examples + -------- + import asyncio + + from skyvern import AsyncSkyvern + + client = AsyncSkyvern( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.workflows.update_workflow( + workflow_id="wpid_123", + ) + + + asyncio.run(main()) + """ + _response = await self._client_wrapper.httpx_client.request( + f"v1/workflows/{jsonable_encoder(workflow_id)}", + method="POST", + json={ + "json_definition": convert_and_respect_annotation_metadata( + object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write" + ), + "yaml_definition": yaml_definition, + }, + request_options=request_options, + omit=OMIT, ) try: if 200 <= _response.status_code < 300: @@ -222,7 +424,6 @@ class AsyncWorkflowsClient: client = AsyncSkyvern( api_key="YOUR_API_KEY", - authorization="YOUR_AUTHORIZATION", )