diff --git a/.codegen.json b/.codegen.json index 3e096d6b2..40890c7ef 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "18868e7", "specHash": "d0976fc", "version": "4.7.0" } +{ "engineHash": "18868e7", "specHash": "f899bf6", "version": "4.7.0" } diff --git a/box_sdk_gen/client.py b/box_sdk_gen/client.py index 060a6249b..7e807a9d7 100644 --- a/box_sdk_gen/client.py +++ b/box_sdk_gen/client.py @@ -192,6 +192,8 @@ from box_sdk_gen.managers.external_users import ExternalUsersManager +from box_sdk_gen.managers.automate_workflows import AutomateWorkflowsManager + from box_sdk_gen.networking.auth import Authentication from box_sdk_gen.networking.network import NetworkSession @@ -464,6 +466,9 @@ def __init__(self, auth: Authentication, *, network_session: NetworkSession = No self.external_users = ExternalUsersManager( auth=self.auth, network_session=self.network_session ) + self.automate_workflows = AutomateWorkflowsManager( + auth=self.auth, network_session=self.network_session + ) def make_request(self, fetch_options: FetchOptions) -> FetchResponse: """ diff --git a/box_sdk_gen/managers/__init__.py b/box_sdk_gen/managers/__init__.py index fa6fecc26..84b4a75ef 100644 --- a/box_sdk_gen/managers/__init__.py +++ b/box_sdk_gen/managers/__init__.py @@ -163,3 +163,5 @@ from box_sdk_gen.managers.archives import * from box_sdk_gen.managers.external_users import * + +from box_sdk_gen.managers.automate_workflows import * diff --git a/box_sdk_gen/managers/automate_workflows.py b/box_sdk_gen/managers/automate_workflows.py new file mode 100644 index 000000000..4ce3592d6 --- /dev/null +++ b/box_sdk_gen/managers/automate_workflows.py @@ -0,0 +1,175 @@ +from typing import Optional + +from typing import Dict + +from box_sdk_gen.internal.utils import to_string + +from box_sdk_gen.serialization.json import deserialize + +from typing import List + +from box_sdk_gen.serialization.json import serialize + +from box_sdk_gen.networking.fetch_options import ResponseFormat + +from box_sdk_gen.schemas.v2026_r0.automate_workflows_v2026_r0 import ( + AutomateWorkflowsV2026R0, +) + +from box_sdk_gen.schemas.v2026_r0.client_error_v2026_r0 import ClientErrorV2026R0 + +from box_sdk_gen.parameters.v2026_r0.box_version_header_v2026_r0 import ( + BoxVersionHeaderV2026R0, +) + +from box_sdk_gen.schemas.v2026_r0.automate_workflow_start_request_v2026_r0 import ( + AutomateWorkflowStartRequestV2026R0, +) + +from box_sdk_gen.box.errors import BoxSDKError + +from box_sdk_gen.networking.auth import Authentication + +from box_sdk_gen.networking.network import NetworkSession + +from box_sdk_gen.networking.fetch_options import FetchOptions + +from box_sdk_gen.networking.fetch_response import FetchResponse + +from box_sdk_gen.internal.utils import prepare_params + +from box_sdk_gen.internal.utils import to_string + +from box_sdk_gen.internal.utils import ByteStream + +from box_sdk_gen.serialization.json import sd_to_json + +from box_sdk_gen.serialization.json import SerializedData + + +class AutomateWorkflowsManager: + def __init__( + self, + *, + auth: Optional[Authentication] = None, + network_session: NetworkSession = None + ): + if network_session is None: + network_session = NetworkSession() + self.auth = auth + self.network_session = network_session + + def get_automate_workflows_v2026_r0( + self, + folder_id: str, + *, + limit: Optional[int] = None, + marker: Optional[str] = None, + box_version: BoxVersionHeaderV2026R0 = BoxVersionHeaderV2026R0._2026_0, + extra_headers: Optional[Dict[str, Optional[str]]] = None + ) -> AutomateWorkflowsV2026R0: + """ + Returns workflow actions from Automate for a folder, using the + + `WORKFLOW` action category. + + :param folder_id: The unique identifier that represent a folder. + + The ID for any folder can be determined + by visiting this folder in the web application + and copying the ID from the URL. For example, + for the URL `https://*.app.box.com/folder/123` + the `folder_id` is `123`. + + The root folder of a Box account is + always represented by the ID `0`. + :type folder_id: str + :param limit: The maximum number of items to return per page., defaults to None + :type limit: Optional[int], optional + :param marker: Defines the position marker at which to begin returning results. This is + used when paginating using marker-based pagination., defaults to None + :type marker: Optional[str], optional + :param box_version: Version header., defaults to BoxVersionHeaderV2026R0._2026_0 + :type box_version: BoxVersionHeaderV2026R0, optional + :param extra_headers: Extra headers that will be included in the HTTP request., defaults to None + :type extra_headers: Optional[Dict[str, Optional[str]]], optional + """ + if extra_headers is None: + extra_headers = {} + query_params_map: Dict[str, str] = prepare_params( + { + 'folder_id': to_string(folder_id), + 'limit': to_string(limit), + 'marker': to_string(marker), + } + ) + headers_map: Dict[str, str] = prepare_params( + {'box-version': to_string(box_version), **extra_headers} + ) + response: FetchResponse = self.network_session.network_client.fetch( + FetchOptions( + url=''.join( + [self.network_session.base_urls.base_url, '/2.0/automate_workflows'] + ), + method='GET', + params=query_params_map, + headers=headers_map, + response_format=ResponseFormat.JSON, + auth=self.auth, + network_session=self.network_session, + ) + ) + return deserialize(response.data, AutomateWorkflowsV2026R0) + + def create_automate_workflow_start_v2026_r0( + self, + workflow_id: str, + workflow_action_id: str, + file_ids: List[str], + *, + box_version: BoxVersionHeaderV2026R0 = BoxVersionHeaderV2026R0._2026_0, + extra_headers: Optional[Dict[str, Optional[str]]] = None + ) -> None: + """ + Starts an Automate workflow manually by using a workflow action ID and file IDs. + :param workflow_id: The ID of the workflow. + Example: "12345" + :type workflow_id: str + :param workflow_action_id: The callable action ID used to trigger the selected workflow. + :type workflow_action_id: str + :param file_ids: The files to process with the selected workflow. + :type file_ids: List[str] + :param box_version: Version header., defaults to BoxVersionHeaderV2026R0._2026_0 + :type box_version: BoxVersionHeaderV2026R0, optional + :param extra_headers: Extra headers that will be included in the HTTP request., defaults to None + :type extra_headers: Optional[Dict[str, Optional[str]]], optional + """ + if extra_headers is None: + extra_headers = {} + request_body: Dict = { + 'workflow_action_id': workflow_action_id, + 'file_ids': file_ids, + } + headers_map: Dict[str, str] = prepare_params( + {'box-version': to_string(box_version), **extra_headers} + ) + response: FetchResponse = self.network_session.network_client.fetch( + FetchOptions( + url=''.join( + [ + self.network_session.base_urls.base_url, + '/2.0/automate_workflows/', + to_string(workflow_id), + '/start', + ] + ), + method='POST', + headers=headers_map, + data=serialize(request_body), + content_type='application/json', + response_format=ResponseFormat.NO_CONTENT, + auth=self.auth, + network_session=self.network_session, + ) + ) + return None diff --git a/box_sdk_gen/parameters/__init__.py b/box_sdk_gen/parameters/__init__.py index 6ee9acb7e..1493eab0a 100644 --- a/box_sdk_gen/parameters/__init__.py +++ b/box_sdk_gen/parameters/__init__.py @@ -1 +1,3 @@ from box_sdk_gen.parameters.v2025_r0 import * + +from box_sdk_gen.parameters.v2026_r0 import * diff --git a/box_sdk_gen/parameters/v2026_r0/__init__.py b/box_sdk_gen/parameters/v2026_r0/__init__.py new file mode 100644 index 000000000..068a08d4b --- /dev/null +++ b/box_sdk_gen/parameters/v2026_r0/__init__.py @@ -0,0 +1 @@ +from box_sdk_gen.parameters.v2026_r0.box_version_header_v2026_r0 import * diff --git a/box_sdk_gen/parameters/v2026_r0/box_version_header_v2026_r0.py b/box_sdk_gen/parameters/v2026_r0/box_version_header_v2026_r0.py new file mode 100644 index 000000000..956895ee3 --- /dev/null +++ b/box_sdk_gen/parameters/v2026_r0/box_version_header_v2026_r0.py @@ -0,0 +1,7 @@ +from enum import Enum + +from box_sdk_gen.box.errors import BoxSDKError + + +class BoxVersionHeaderV2026R0(str, Enum): + _2026_0 = '2026.0' diff --git a/box_sdk_gen/schemas/__init__.py b/box_sdk_gen/schemas/__init__.py index e5dfb6bb8..668de48cf 100644 --- a/box_sdk_gen/schemas/__init__.py +++ b/box_sdk_gen/schemas/__init__.py @@ -591,3 +591,5 @@ from box_sdk_gen.schemas.zip_download_status import * from box_sdk_gen.schemas.v2025_r0 import * + +from box_sdk_gen.schemas.v2026_r0 import * diff --git a/box_sdk_gen/schemas/v2026_r0/__init__.py b/box_sdk_gen/schemas/v2026_r0/__init__.py new file mode 100644 index 000000000..6b48bc6d9 --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/__init__.py @@ -0,0 +1,13 @@ +from box_sdk_gen.schemas.v2026_r0.automate_workflow_reference_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.automate_workflow_start_request_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.client_error_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.user_base_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.user_mini_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.automate_workflow_action_v2026_r0 import * + +from box_sdk_gen.schemas.v2026_r0.automate_workflows_v2026_r0 import * diff --git a/box_sdk_gen/schemas/v2026_r0/automate_workflow_action_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/automate_workflow_action_v2026_r0.py new file mode 100644 index 000000000..25cfb5da1 --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/automate_workflow_action_v2026_r0.py @@ -0,0 +1,66 @@ +from enum import Enum + +from typing import Optional + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.schemas.v2026_r0.user_mini_v2026_r0 import UserMiniV2026R0 + +from box_sdk_gen.schemas.v2026_r0.automate_workflow_reference_v2026_r0 import ( + AutomateWorkflowReferenceV2026R0, +) + +from box_sdk_gen.box.errors import BoxSDKError + +from box_sdk_gen.internal.utils import DateTime + + +class AutomateWorkflowActionV2026R0TypeField(str, Enum): + WORKFLOW_ACTION = 'workflow_action' + + +class AutomateWorkflowActionV2026R0ActionTypeField(str, Enum): + RUN_WORKFLOW = 'run_workflow' + + +class AutomateWorkflowActionV2026R0(BaseObject): + _discriminator = 'type', {'workflow_action'} + + def __init__( + self, + id: str, + workflow: AutomateWorkflowReferenceV2026R0, + *, + type: AutomateWorkflowActionV2026R0TypeField = AutomateWorkflowActionV2026R0TypeField.WORKFLOW_ACTION, + action_type: AutomateWorkflowActionV2026R0ActionTypeField = AutomateWorkflowActionV2026R0ActionTypeField.RUN_WORKFLOW, + description: Optional[str] = None, + created_at: Optional[DateTime] = None, + updated_at: Optional[DateTime] = None, + created_by: Optional[UserMiniV2026R0] = None, + updated_by: Optional[UserMiniV2026R0] = None, + **kwargs + ): + """ + :param id: The identifier for the Automate action. + :type id: str + :param type: The object type for this workflow action wrapper., defaults to AutomateWorkflowActionV2026R0TypeField.WORKFLOW_ACTION + :type type: AutomateWorkflowActionV2026R0TypeField, optional + :param action_type: The type that defines the behavior of this action., defaults to AutomateWorkflowActionV2026R0ActionTypeField.RUN_WORKFLOW + :type action_type: AutomateWorkflowActionV2026R0ActionTypeField, optional + :param description: A human-readable description of the workflow action., defaults to None + :type description: Optional[str], optional + :param created_at: The date and time when the action was created., defaults to None + :type created_at: Optional[DateTime], optional + :param updated_at: The date and time when the action was last updated., defaults to None + :type updated_at: Optional[DateTime], optional + """ + super().__init__(**kwargs) + self.id = id + self.workflow = workflow + self.type = type + self.action_type = action_type + self.description = description + self.created_at = created_at + self.updated_at = updated_at + self.created_by = created_by + self.updated_by = updated_by diff --git a/box_sdk_gen/schemas/v2026_r0/automate_workflow_reference_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/automate_workflow_reference_v2026_r0.py new file mode 100644 index 000000000..c943591ba --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/automate_workflow_reference_v2026_r0.py @@ -0,0 +1,36 @@ +from enum import Enum + +from typing import Optional + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.box.errors import BoxSDKError + + +class AutomateWorkflowReferenceV2026R0TypeField(str, Enum): + WORKFLOW = 'workflow' + + +class AutomateWorkflowReferenceV2026R0(BaseObject): + _discriminator = 'type', {'workflow'} + + def __init__( + self, + id: str, + *, + type: AutomateWorkflowReferenceV2026R0TypeField = AutomateWorkflowReferenceV2026R0TypeField.WORKFLOW, + name: Optional[str] = None, + **kwargs + ): + """ + :param id: The identifier for the Automate workflow instance. + :type id: str + :param type: The object type., defaults to AutomateWorkflowReferenceV2026R0TypeField.WORKFLOW + :type type: AutomateWorkflowReferenceV2026R0TypeField, optional + :param name: The display name for the Automate workflow., defaults to None + :type name: Optional[str], optional + """ + super().__init__(**kwargs) + self.id = id + self.type = type + self.name = name diff --git a/box_sdk_gen/schemas/v2026_r0/automate_workflow_start_request_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/automate_workflow_start_request_v2026_r0.py new file mode 100644 index 000000000..6e26f2db6 --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/automate_workflow_start_request_v2026_r0.py @@ -0,0 +1,18 @@ +from typing import List + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.box.errors import BoxSDKError + + +class AutomateWorkflowStartRequestV2026R0(BaseObject): + def __init__(self, workflow_action_id: str, file_ids: List[str], **kwargs): + """ + :param workflow_action_id: The callable action ID used to trigger the selected workflow. + :type workflow_action_id: str + :param file_ids: The files to process with the selected workflow. + :type file_ids: List[str] + """ + super().__init__(**kwargs) + self.workflow_action_id = workflow_action_id + self.file_ids = file_ids diff --git a/box_sdk_gen/schemas/v2026_r0/automate_workflows_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/automate_workflows_v2026_r0.py new file mode 100644 index 000000000..5e67551a7 --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/automate_workflows_v2026_r0.py @@ -0,0 +1,36 @@ +from typing import Optional + +from typing import List + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.schemas.v2026_r0.automate_workflow_action_v2026_r0 import ( + AutomateWorkflowActionV2026R0, +) + +from box_sdk_gen.box.errors import BoxSDKError + + +class AutomateWorkflowsV2026R0(BaseObject): + def __init__( + self, + *, + entries: Optional[List[AutomateWorkflowActionV2026R0]] = None, + limit: Optional[int] = None, + next_marker: Optional[str] = None, + **kwargs + ): + """ + :param entries: Workflow actions available for manual start., defaults to None + :type entries: Optional[List[AutomateWorkflowActionV2026R0]], optional + :param limit: The limit that was used for these entries. This will be the same as the + `limit` query parameter unless that value exceeded the maximum value + allowed. The maximum value varies by API., defaults to None + :type limit: Optional[int], optional + :param next_marker: The marker for the start of the next page of results., defaults to None + :type next_marker: Optional[str], optional + """ + super().__init__(**kwargs) + self.entries = entries + self.limit = limit + self.next_marker = next_marker diff --git a/box_sdk_gen/schemas/v2026_r0/client_error_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/client_error_v2026_r0.py new file mode 100644 index 000000000..7d905776a --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/client_error_v2026_r0.py @@ -0,0 +1,77 @@ +from enum import Enum + +from typing import Optional + +from typing import Dict + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.box.errors import BoxSDKError + + +class ClientErrorV2026R0TypeField(str, Enum): + ERROR = 'error' + + +class ClientErrorV2026R0CodeField(str, Enum): + CREATED = 'created' + ACCEPTED = 'accepted' + NO_CONTENT = 'no_content' + REDIRECT = 'redirect' + NOT_MODIFIED = 'not_modified' + BAD_REQUEST = 'bad_request' + UNAUTHORIZED = 'unauthorized' + FORBIDDEN = 'forbidden' + NOT_FOUND = 'not_found' + METHOD_NOT_ALLOWED = 'method_not_allowed' + CONFLICT = 'conflict' + PRECONDITION_FAILED = 'precondition_failed' + TOO_MANY_REQUESTS = 'too_many_requests' + INTERNAL_SERVER_ERROR = 'internal_server_error' + UNAVAILABLE = 'unavailable' + ITEM_NAME_INVALID = 'item_name_invalid' + INSUFFICIENT_SCOPE = 'insufficient_scope' + + +class ClientErrorV2026R0(BaseObject): + _discriminator = 'type', {'error'} + + def __init__( + self, + *, + type: Optional[ClientErrorV2026R0TypeField] = None, + status: Optional[int] = None, + code: Optional[ClientErrorV2026R0CodeField] = None, + message: Optional[str] = None, + context_info: Optional[Dict] = None, + help_url: Optional[str] = None, + request_id: Optional[str] = None, + **kwargs + ): + """ + :param type: The value will always be `error`., defaults to None + :type type: Optional[ClientErrorV2026R0TypeField], optional + :param status: The HTTP status of the response., defaults to None + :type status: Optional[int], optional + :param code: A Box-specific error code., defaults to None + :type code: Optional[ClientErrorV2026R0CodeField], optional + :param message: A short message describing the error., defaults to None + :type message: Optional[str], optional + :param context_info: A free-form object that contains additional context + about the error. The possible fields are defined on + a per-endpoint basis. `message` is only one example., defaults to None + :type context_info: Optional[Dict], optional + :param help_url: A URL that links to more information about why this error occurred., defaults to None + :type help_url: Optional[str], optional + :param request_id: A unique identifier for this response, which can be used + when contacting Box support., defaults to None + :type request_id: Optional[str], optional + """ + super().__init__(**kwargs) + self.type = type + self.status = status + self.code = code + self.message = message + self.context_info = context_info + self.help_url = help_url + self.request_id = request_id diff --git a/box_sdk_gen/schemas/v2026_r0/user_base_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/user_base_v2026_r0.py new file mode 100644 index 000000000..33248225f --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/user_base_v2026_r0.py @@ -0,0 +1,30 @@ +from enum import Enum + +from box_sdk_gen.internal.base_object import BaseObject + +from box_sdk_gen.box.errors import BoxSDKError + + +class UserBaseV2026R0TypeField(str, Enum): + USER = 'user' + + +class UserBaseV2026R0(BaseObject): + _discriminator = 'type', {'user'} + + def __init__( + self, + id: str, + *, + type: UserBaseV2026R0TypeField = UserBaseV2026R0TypeField.USER, + **kwargs + ): + """ + :param id: The unique identifier for this user. + :type id: str + :param type: The value will always be `user`., defaults to UserBaseV2026R0TypeField.USER + :type type: UserBaseV2026R0TypeField, optional + """ + super().__init__(**kwargs) + self.id = id + self.type = type diff --git a/box_sdk_gen/schemas/v2026_r0/user_mini_v2026_r0.py b/box_sdk_gen/schemas/v2026_r0/user_mini_v2026_r0.py new file mode 100644 index 000000000..d6d68d65f --- /dev/null +++ b/box_sdk_gen/schemas/v2026_r0/user_mini_v2026_r0.py @@ -0,0 +1,34 @@ +from typing import Optional + +from box_sdk_gen.schemas.v2026_r0.user_base_v2026_r0 import UserBaseV2026R0TypeField + +from box_sdk_gen.schemas.v2026_r0.user_base_v2026_r0 import UserBaseV2026R0 + +from box_sdk_gen.box.errors import BoxSDKError + + +class UserMiniV2026R0(UserBaseV2026R0): + _discriminator = 'type', {'user'} + + def __init__( + self, + id: str, + *, + name: Optional[str] = None, + login: Optional[str] = None, + type: UserBaseV2026R0TypeField = UserBaseV2026R0TypeField.USER, + **kwargs + ): + """ + :param id: The unique identifier for this user. + :type id: str + :param name: The display name of this user., defaults to None + :type name: Optional[str], optional + :param login: The primary email address of this user., defaults to None + :type login: Optional[str], optional + :param type: The value will always be `user`., defaults to UserBaseV2026R0TypeField.USER + :type type: UserBaseV2026R0TypeField, optional + """ + super().__init__(id=id, type=type, **kwargs) + self.name = name + self.login = login diff --git a/docs/box_sdk_gen/README.md b/docs/box_sdk_gen/README.md index a97a2ce83..16e8f70b2 100644 --- a/docs/box_sdk_gen/README.md +++ b/docs/box_sdk_gen/README.md @@ -18,6 +18,7 @@ the SDK are available by topic: - [App item associations](app_item_associations.md) - [Archives](archives.md) - [Authorization](authorization.md) +- [Automate workflows](automate_workflows.md) - [Avatars](avatars.md) - [Chunked uploads](chunked_uploads.md) - [Classifications](classifications.md) diff --git a/docs/box_sdk_gen/automate_workflows.md b/docs/box_sdk_gen/automate_workflows.md new file mode 100644 index 000000000..2931823d1 --- /dev/null +++ b/docs/box_sdk_gen/automate_workflows.md @@ -0,0 +1,65 @@ +# AutomateWorkflowsManager + +- [List Automate workflows defined as callable actions](#list-automate-workflows-defined-as-callable-actions) +- [Start Automate workflow](#start-automate-workflow) + +## List Automate workflows defined as callable actions + +Returns workflow actions from Automate for a folder, using the +`WORKFLOW` action category. + +This operation is performed by calling function `get_automate_workflows_v2026_r0`. + +See the endpoint docs at +[API Reference](https://developer.box.com/reference/v2026.0/get-automate-workflows/). + +_Currently we don't have an example for calling `get_automate_workflows_v2026_r0` in integration tests_ + +### Arguments + +- folder_id `str` + - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. +- limit `Optional[int]` + - The maximum number of items to return per page. +- marker `Optional[str]` + - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. +- box_version `BoxVersionHeaderV2026R0` + - Version header. +- extra_headers `Optional[Dict[str, Optional[str]]]` + - Extra headers that will be included in the HTTP request. + +### Returns + +This function returns a value of type `AutomateWorkflowsV2026R0`. + +Returns workflow actions that can be manually started. + +## Start Automate workflow + +Starts an Automate workflow manually by using a workflow action ID and file IDs. + +This operation is performed by calling function `create_automate_workflow_start_v2026_r0`. + +See the endpoint docs at +[API Reference](https://developer.box.com/reference/v2026.0/post-automate-workflows-id-start/). + +_Currently we don't have an example for calling `create_automate_workflow_start_v2026_r0` in integration tests_ + +### Arguments + +- workflow_id `str` + - The ID of the workflow. Example: "12345" +- workflow_action_id `str` + - The callable action ID used to trigger the selected workflow. +- file_ids `List[str]` + - The files to process with the selected workflow. +- box_version `BoxVersionHeaderV2026R0` + - Version header. +- extra_headers `Optional[Dict[str, Optional[str]]]` + - Extra headers that will be included in the HTTP request. + +### Returns + +This function returns a value of type `None`. + +Starts the workflow.