dify-oapi2 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. dify_oapi/api/workflow/v1/model/file/__init__.py +1 -0
  2. dify_oapi/api/workflow/v1/model/file/file_info.py +53 -0
  3. dify_oapi/api/workflow/v1/model/file/preview_file_request.py +34 -0
  4. dify_oapi/api/workflow/v1/model/file/preview_file_response.py +9 -0
  5. dify_oapi/api/workflow/v1/model/file/upload_file_request.py +42 -0
  6. dify_oapi/api/workflow/v1/model/file/upload_file_request_body.py +23 -0
  7. dify_oapi/api/workflow/v1/model/file/upload_file_response.py +9 -0
  8. dify_oapi/api/workflow/v1/model/info/app_info.py +45 -0
  9. dify_oapi/api/workflow/v1/model/info/file_upload_config.py +45 -0
  10. dify_oapi/api/workflow/v1/model/info/get_info_request.py +24 -0
  11. dify_oapi/api/workflow/v1/model/info/get_info_response.py +9 -0
  12. dify_oapi/api/workflow/v1/model/info/get_parameters_request.py +24 -0
  13. dify_oapi/api/workflow/v1/model/info/get_parameters_response.py +9 -0
  14. dify_oapi/api/workflow/v1/model/info/get_site_request.py +24 -0
  15. dify_oapi/api/workflow/v1/model/info/get_site_response.py +9 -0
  16. dify_oapi/api/workflow/v1/model/info/parameters_info.py +37 -0
  17. dify_oapi/api/workflow/v1/model/info/site_info.py +75 -0
  18. dify_oapi/api/workflow/v1/model/info/system_parameters.py +38 -0
  19. dify_oapi/api/workflow/v1/model/info/user_input_form.py +43 -0
  20. dify_oapi/api/workflow/v1/model/log/__init__.py +0 -0
  21. dify_oapi/api/workflow/v1/model/log/end_user_info.py +38 -0
  22. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_request.py +48 -0
  23. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_response.py +13 -0
  24. dify_oapi/api/workflow/v1/model/log/log_info.py +57 -0
  25. dify_oapi/api/workflow/v1/model/log/workflow_run_log_info.py +65 -0
  26. dify_oapi/api/workflow/v1/model/workflow/execution_metadata.py +33 -0
  27. dify_oapi/api/workflow/v1/model/workflow/get_workflow_run_detail_request.py +30 -0
  28. dify_oapi/api/workflow/v1/model/{run_workflow_response.py → workflow/get_workflow_run_detail_response.py} +8 -11
  29. dify_oapi/api/workflow/v1/model/workflow/node_info.py +88 -0
  30. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +38 -0
  31. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +47 -0
  32. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +9 -0
  33. dify_oapi/api/workflow/v1/model/{run_workflow_request.py → workflow/run_workflow_request.py} +4 -4
  34. dify_oapi/api/workflow/v1/model/workflow/run_workflow_request_body.py +47 -0
  35. dify_oapi/api/workflow/v1/model/workflow/run_workflow_response.py +9 -0
  36. dify_oapi/api/workflow/v1/model/{stop_workflow_request.py → workflow/stop_workflow_request.py} +9 -9
  37. dify_oapi/api/workflow/v1/model/{stop_workflow_request_body.py → workflow/stop_workflow_request_body.py} +3 -3
  38. dify_oapi/api/workflow/v1/model/{stop_workflow_response.py → workflow/stop_workflow_response.py} +2 -0
  39. dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +42 -0
  40. dify_oapi/api/workflow/v1/model/workflow/workflow_file_info.py +40 -0
  41. dify_oapi/api/workflow/v1/model/workflow/workflow_inputs.py +56 -0
  42. dify_oapi/api/workflow/v1/model/workflow/workflow_run_data.py +72 -0
  43. dify_oapi/api/workflow/v1/model/workflow/workflow_run_info.py +35 -0
  44. dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +54 -0
  45. dify_oapi/api/workflow/v1/resource/__init__.py +0 -1
  46. dify_oapi/api/workflow/v1/resource/file.py +63 -0
  47. dify_oapi/api/workflow/v1/resource/info.py +93 -0
  48. dify_oapi/api/workflow/v1/resource/log.py +43 -0
  49. dify_oapi/api/workflow/v1/resource/workflow.py +171 -53
  50. dify_oapi/api/workflow/v1/version.py +7 -1
  51. {dify_oapi2-0.2.0.dist-info → dify_oapi2-0.3.0.dist-info}/METADATA +2 -2
  52. {dify_oapi2-0.2.0.dist-info → dify_oapi2-0.3.0.dist-info}/RECORD +54 -18
  53. dify_oapi/api/workflow/v1/model/get_workflow_log_request.py +0 -50
  54. dify_oapi/api/workflow/v1/model/get_workflow_log_response.py +0 -42
  55. dify_oapi/api/workflow/v1/model/get_workflow_result_request.py +0 -30
  56. dify_oapi/api/workflow/v1/model/get_workflow_result_response.py +0 -17
  57. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +0 -42
  58. dify_oapi/api/workflow/v1/model/run_workflow_request_file.py +0 -50
  59. {dify_oapi2-0.2.0.dist-info → dify_oapi2-0.3.0.dist-info}/LICENSE +0 -0
  60. {dify_oapi2-0.2.0.dist-info → dify_oapi2-0.3.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,57 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from ..workflow.workflow_types import CreatedByRole, CreatedFrom
6
+ from .end_user_info import EndUserInfo
7
+ from .workflow_run_log_info import WorkflowRunLogInfo
8
+
9
+
10
+ class LogInfo(BaseModel):
11
+ id: str | None = None
12
+ workflow_run: WorkflowRunLogInfo | None = None
13
+ created_from: CreatedFrom | None = None
14
+ created_by_role: CreatedByRole | None = None
15
+ created_by_account: str | None = None
16
+ created_by_end_user: EndUserInfo | None = None
17
+ created_at: int | None = None
18
+
19
+ @staticmethod
20
+ def builder() -> LogInfoBuilder:
21
+ return LogInfoBuilder()
22
+
23
+
24
+ class LogInfoBuilder:
25
+ def __init__(self):
26
+ self._log_info = LogInfo()
27
+
28
+ def build(self) -> LogInfo:
29
+ return self._log_info
30
+
31
+ def id(self, id: str) -> LogInfoBuilder:
32
+ self._log_info.id = id
33
+ return self
34
+
35
+ def workflow_run(self, workflow_run: WorkflowRunLogInfo) -> LogInfoBuilder:
36
+ self._log_info.workflow_run = workflow_run
37
+ return self
38
+
39
+ def created_from(self, created_from: CreatedFrom) -> LogInfoBuilder:
40
+ self._log_info.created_from = created_from
41
+ return self
42
+
43
+ def created_by_role(self, created_by_role: CreatedByRole) -> LogInfoBuilder:
44
+ self._log_info.created_by_role = created_by_role
45
+ return self
46
+
47
+ def created_by_account(self, created_by_account: str) -> LogInfoBuilder:
48
+ self._log_info.created_by_account = created_by_account
49
+ return self
50
+
51
+ def created_by_end_user(self, created_by_end_user: EndUserInfo) -> LogInfoBuilder:
52
+ self._log_info.created_by_end_user = created_by_end_user
53
+ return self
54
+
55
+ def created_at(self, created_at: int) -> LogInfoBuilder:
56
+ self._log_info.created_at = created_at
57
+ return self
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from ..workflow.workflow_types import LogStatus
6
+
7
+
8
+ class WorkflowRunLogInfo(BaseModel):
9
+ id: str | None = None
10
+ version: str | None = None
11
+ status: LogStatus | None = None
12
+ error: str | None = None
13
+ elapsed_time: float | None = None
14
+ total_tokens: int | None = None
15
+ total_steps: int | None = None
16
+ created_at: int | None = None
17
+ finished_at: int | None = None
18
+
19
+ @staticmethod
20
+ def builder() -> WorkflowRunLogInfoBuilder:
21
+ return WorkflowRunLogInfoBuilder()
22
+
23
+
24
+ class WorkflowRunLogInfoBuilder:
25
+ def __init__(self):
26
+ self._workflow_run_log_info = WorkflowRunLogInfo()
27
+
28
+ def build(self) -> WorkflowRunLogInfo:
29
+ return self._workflow_run_log_info
30
+
31
+ def id(self, id: str) -> WorkflowRunLogInfoBuilder:
32
+ self._workflow_run_log_info.id = id
33
+ return self
34
+
35
+ def version(self, version: str) -> WorkflowRunLogInfoBuilder:
36
+ self._workflow_run_log_info.version = version
37
+ return self
38
+
39
+ def status(self, status: LogStatus) -> WorkflowRunLogInfoBuilder:
40
+ self._workflow_run_log_info.status = status
41
+ return self
42
+
43
+ def error(self, error: str) -> WorkflowRunLogInfoBuilder:
44
+ self._workflow_run_log_info.error = error
45
+ return self
46
+
47
+ def elapsed_time(self, elapsed_time: float) -> WorkflowRunLogInfoBuilder:
48
+ self._workflow_run_log_info.elapsed_time = elapsed_time
49
+ return self
50
+
51
+ def total_tokens(self, total_tokens: int) -> WorkflowRunLogInfoBuilder:
52
+ self._workflow_run_log_info.total_tokens = total_tokens
53
+ return self
54
+
55
+ def total_steps(self, total_steps: int) -> WorkflowRunLogInfoBuilder:
56
+ self._workflow_run_log_info.total_steps = total_steps
57
+ return self
58
+
59
+ def created_at(self, created_at: int) -> WorkflowRunLogInfoBuilder:
60
+ self._workflow_run_log_info.created_at = created_at
61
+ return self
62
+
63
+ def finished_at(self, finished_at: int) -> WorkflowRunLogInfoBuilder:
64
+ self._workflow_run_log_info.finished_at = finished_at
65
+ return self
@@ -0,0 +1,33 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class ExecutionMetadata(BaseModel):
7
+ total_tokens: int | None = None
8
+ total_price: float | None = None
9
+ currency: str | None = None
10
+
11
+ @staticmethod
12
+ def builder() -> ExecutionMetadataBuilder:
13
+ return ExecutionMetadataBuilder()
14
+
15
+
16
+ class ExecutionMetadataBuilder:
17
+ def __init__(self):
18
+ self._execution_metadata = ExecutionMetadata()
19
+
20
+ def build(self) -> ExecutionMetadata:
21
+ return self._execution_metadata
22
+
23
+ def total_tokens(self, total_tokens: int) -> ExecutionMetadataBuilder:
24
+ self._execution_metadata.total_tokens = total_tokens
25
+ return self
26
+
27
+ def total_price(self, total_price: float) -> ExecutionMetadataBuilder:
28
+ self._execution_metadata.total_price = total_price
29
+ return self
30
+
31
+ def currency(self, currency: str) -> ExecutionMetadataBuilder:
32
+ self._execution_metadata.currency = currency
33
+ return self
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.enum import HttpMethod
4
+ from dify_oapi.core.model.base_request import BaseRequest
5
+
6
+
7
+ class GetWorkflowRunDetailRequest(BaseRequest):
8
+ def __init__(self) -> None:
9
+ super().__init__()
10
+ self.workflow_run_id: str | None = None
11
+
12
+ @staticmethod
13
+ def builder() -> GetWorkflowRunDetailRequestBuilder:
14
+ return GetWorkflowRunDetailRequestBuilder()
15
+
16
+
17
+ class GetWorkflowRunDetailRequestBuilder:
18
+ def __init__(self):
19
+ get_workflow_run_detail_request = GetWorkflowRunDetailRequest()
20
+ get_workflow_run_detail_request.http_method = HttpMethod.GET
21
+ get_workflow_run_detail_request.uri = "/v1/workflows/run/:workflow_run_id"
22
+ self._get_workflow_run_detail_request = get_workflow_run_detail_request
23
+
24
+ def build(self) -> GetWorkflowRunDetailRequest:
25
+ return self._get_workflow_run_detail_request
26
+
27
+ def workflow_run_id(self, workflow_run_id: str) -> GetWorkflowRunDetailRequestBuilder:
28
+ self._get_workflow_run_detail_request.workflow_run_id = workflow_run_id
29
+ self._get_workflow_run_detail_request.paths["workflow_run_id"] = workflow_run_id
30
+ return self
@@ -1,24 +1,21 @@
1
1
  from __future__ import annotations
2
2
 
3
- from pydantic import BaseModel
3
+ from typing import Any
4
4
 
5
5
  from dify_oapi.core.model.base_response import BaseResponse
6
6
 
7
+ from .workflow_types import WorkflowStatus
7
8
 
8
- class RunWorkflowResponse(BaseResponse):
9
- workflow_run_id: str | None = None
10
- task_id: str | None = None
11
- data: RunWorkflowResponseData | None = None
12
9
 
13
-
14
- class RunWorkflowResponseData(BaseModel):
10
+ class GetWorkflowRunDetailResponse(BaseResponse):
15
11
  id: str | None = None
16
12
  workflow_id: str | None = None
17
- status: str | None = None
18
- outputs: dict | None = None
13
+ status: WorkflowStatus | None = None
14
+ inputs: dict[str, Any] | None = None
15
+ outputs: dict[str, Any] | None = None
19
16
  error: str | None = None
20
- elapsed_time: float | None = None
21
- total_tokens: int | None = None
22
17
  total_steps: int | None = None
18
+ total_tokens: int | None = None
23
19
  created_at: int | None = None
24
20
  finished_at: int | None = None
21
+ elapsed_time: float | None = None
@@ -0,0 +1,88 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .execution_metadata import ExecutionMetadata
8
+ from .workflow_types import NodeType, WorkflowStatus
9
+
10
+
11
+ class NodeInfo(BaseModel):
12
+ id: str | None = None
13
+ node_id: str | None = None
14
+ node_type: NodeType | None = None
15
+ title: str | None = None
16
+ index: int | None = None
17
+ predecessor_node_id: str | None = None
18
+ inputs: dict[str, Any] | None = None
19
+ outputs: dict[str, Any] | None = None
20
+ status: WorkflowStatus | None = None
21
+ error: str | None = None
22
+ elapsed_time: float | None = None
23
+ execution_metadata: ExecutionMetadata | None = None
24
+ created_at: int | None = None
25
+
26
+ @staticmethod
27
+ def builder() -> NodeInfoBuilder:
28
+ return NodeInfoBuilder()
29
+
30
+
31
+ class NodeInfoBuilder:
32
+ def __init__(self):
33
+ self._node_info = NodeInfo()
34
+
35
+ def build(self) -> NodeInfo:
36
+ return self._node_info
37
+
38
+ def id(self, id: str) -> NodeInfoBuilder:
39
+ self._node_info.id = id
40
+ return self
41
+
42
+ def node_id(self, node_id: str) -> NodeInfoBuilder:
43
+ self._node_info.node_id = node_id
44
+ return self
45
+
46
+ def node_type(self, node_type: NodeType) -> NodeInfoBuilder:
47
+ self._node_info.node_type = node_type
48
+ return self
49
+
50
+ def title(self, title: str) -> NodeInfoBuilder:
51
+ self._node_info.title = title
52
+ return self
53
+
54
+ def index(self, index: int) -> NodeInfoBuilder:
55
+ self._node_info.index = index
56
+ return self
57
+
58
+ def predecessor_node_id(self, predecessor_node_id: str) -> NodeInfoBuilder:
59
+ self._node_info.predecessor_node_id = predecessor_node_id
60
+ return self
61
+
62
+ def inputs(self, inputs: dict[str, Any]) -> NodeInfoBuilder:
63
+ self._node_info.inputs = inputs
64
+ return self
65
+
66
+ def outputs(self, outputs: dict[str, Any]) -> NodeInfoBuilder:
67
+ self._node_info.outputs = outputs
68
+ return self
69
+
70
+ def status(self, status: WorkflowStatus) -> NodeInfoBuilder:
71
+ self._node_info.status = status
72
+ return self
73
+
74
+ def error(self, error: str) -> NodeInfoBuilder:
75
+ self._node_info.error = error
76
+ return self
77
+
78
+ def elapsed_time(self, elapsed_time: float) -> NodeInfoBuilder:
79
+ self._node_info.elapsed_time = elapsed_time
80
+ return self
81
+
82
+ def execution_metadata(self, execution_metadata: ExecutionMetadata) -> NodeInfoBuilder:
83
+ self._node_info.execution_metadata = execution_metadata
84
+ return self
85
+
86
+ def created_at(self, created_at: int) -> NodeInfoBuilder:
87
+ self._node_info.created_at = created_at
88
+ return self
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.enum import HttpMethod
4
+ from dify_oapi.core.model.base_request import BaseRequest
5
+
6
+ from .run_specific_workflow_request_body import RunSpecificWorkflowRequestBody
7
+
8
+
9
+ class RunSpecificWorkflowRequest(BaseRequest):
10
+ def __init__(self) -> None:
11
+ super().__init__()
12
+ self.workflow_id: str | None = None
13
+ self.request_body: RunSpecificWorkflowRequestBody | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> RunSpecificWorkflowRequestBuilder:
17
+ return RunSpecificWorkflowRequestBuilder()
18
+
19
+
20
+ class RunSpecificWorkflowRequestBuilder:
21
+ def __init__(self):
22
+ run_specific_workflow_request = RunSpecificWorkflowRequest()
23
+ run_specific_workflow_request.http_method = HttpMethod.POST
24
+ run_specific_workflow_request.uri = "/v1/workflows/:workflow_id/run"
25
+ self._run_specific_workflow_request = run_specific_workflow_request
26
+
27
+ def build(self) -> RunSpecificWorkflowRequest:
28
+ return self._run_specific_workflow_request
29
+
30
+ def workflow_id(self, workflow_id: str) -> RunSpecificWorkflowRequestBuilder:
31
+ self._run_specific_workflow_request.workflow_id = workflow_id
32
+ self._run_specific_workflow_request.paths["workflow_id"] = workflow_id
33
+ return self
34
+
35
+ def request_body(self, request_body: RunSpecificWorkflowRequestBody) -> RunSpecificWorkflowRequestBuilder:
36
+ self._run_specific_workflow_request.request_body = request_body
37
+ self._run_specific_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
38
+ return self
@@ -0,0 +1,47 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .workflow_file_info import WorkflowFileInfo
6
+ from .workflow_inputs import WorkflowInputs
7
+ from .workflow_types import ResponseMode
8
+
9
+
10
+ class RunSpecificWorkflowRequestBody(BaseModel):
11
+ inputs: WorkflowInputs | None = None
12
+ response_mode: ResponseMode | None = None
13
+ user: str | None = None
14
+ files: list[WorkflowFileInfo] | None = None
15
+ trace_id: str | None = None
16
+
17
+ @staticmethod
18
+ def builder() -> RunSpecificWorkflowRequestBodyBuilder:
19
+ return RunSpecificWorkflowRequestBodyBuilder()
20
+
21
+
22
+ class RunSpecificWorkflowRequestBodyBuilder:
23
+ def __init__(self):
24
+ self._run_specific_workflow_request_body = RunSpecificWorkflowRequestBody()
25
+
26
+ def build(self) -> RunSpecificWorkflowRequestBody:
27
+ return self._run_specific_workflow_request_body
28
+
29
+ def inputs(self, inputs: WorkflowInputs) -> RunSpecificWorkflowRequestBodyBuilder:
30
+ self._run_specific_workflow_request_body.inputs = inputs
31
+ return self
32
+
33
+ def response_mode(self, response_mode: ResponseMode) -> RunSpecificWorkflowRequestBodyBuilder:
34
+ self._run_specific_workflow_request_body.response_mode = response_mode
35
+ return self
36
+
37
+ def user(self, user: str) -> RunSpecificWorkflowRequestBodyBuilder:
38
+ self._run_specific_workflow_request_body.user = user
39
+ return self
40
+
41
+ def files(self, files: list[WorkflowFileInfo]) -> RunSpecificWorkflowRequestBodyBuilder:
42
+ self._run_specific_workflow_request_body.files = files
43
+ return self
44
+
45
+ def trace_id(self, trace_id: str) -> RunSpecificWorkflowRequestBodyBuilder:
46
+ self._run_specific_workflow_request_body.trace_id = trace_id
47
+ return self
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+ from .workflow_run_info import WorkflowRunInfo
6
+
7
+
8
+ class RunSpecificWorkflowResponse(WorkflowRunInfo, BaseResponse):
9
+ pass
@@ -21,12 +21,12 @@ class RunWorkflowRequestBuilder:
21
21
  run_workflow_request = RunWorkflowRequest()
22
22
  run_workflow_request.http_method = HttpMethod.POST
23
23
  run_workflow_request.uri = "/v1/workflows/run"
24
- self._run_workflow_request: RunWorkflowRequest = run_workflow_request
24
+ self._run_workflow_request = run_workflow_request
25
+
26
+ def build(self) -> RunWorkflowRequest:
27
+ return self._run_workflow_request
25
28
 
26
29
  def request_body(self, request_body: RunWorkflowRequestBody) -> RunWorkflowRequestBuilder:
27
30
  self._run_workflow_request.request_body = request_body
28
31
  self._run_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
29
32
  return self
30
-
31
- def build(self) -> RunWorkflowRequest:
32
- return self._run_workflow_request
@@ -0,0 +1,47 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .workflow_file_info import WorkflowFileInfo
6
+ from .workflow_inputs import WorkflowInputs
7
+ from .workflow_types import ResponseMode
8
+
9
+
10
+ class RunWorkflowRequestBody(BaseModel):
11
+ inputs: WorkflowInputs | None = None
12
+ response_mode: ResponseMode | None = None
13
+ user: str | None = None
14
+ files: list[WorkflowFileInfo] | None = None
15
+ trace_id: str | None = None
16
+
17
+ @staticmethod
18
+ def builder() -> RunWorkflowRequestBodyBuilder:
19
+ return RunWorkflowRequestBodyBuilder()
20
+
21
+
22
+ class RunWorkflowRequestBodyBuilder:
23
+ def __init__(self) -> None:
24
+ self._run_workflow_request_body = RunWorkflowRequestBody()
25
+
26
+ def build(self) -> RunWorkflowRequestBody:
27
+ return self._run_workflow_request_body
28
+
29
+ def inputs(self, inputs: WorkflowInputs) -> RunWorkflowRequestBodyBuilder:
30
+ self._run_workflow_request_body.inputs = inputs
31
+ return self
32
+
33
+ def response_mode(self, response_mode: ResponseMode) -> RunWorkflowRequestBodyBuilder:
34
+ self._run_workflow_request_body.response_mode = response_mode
35
+ return self
36
+
37
+ def user(self, user: str) -> RunWorkflowRequestBodyBuilder:
38
+ self._run_workflow_request_body.user = user
39
+ return self
40
+
41
+ def files(self, files: list[WorkflowFileInfo]) -> RunWorkflowRequestBodyBuilder:
42
+ self._run_workflow_request_body.files = files
43
+ return self
44
+
45
+ def trace_id(self, trace_id: str) -> RunWorkflowRequestBodyBuilder:
46
+ self._run_workflow_request_body.trace_id = trace_id
47
+ return self
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+ from .workflow_run_info import WorkflowRunInfo
6
+
7
+
8
+ class RunWorkflowResponse(WorkflowRunInfo, BaseResponse):
9
+ pass
@@ -18,21 +18,21 @@ class StopWorkflowRequest(BaseRequest):
18
18
 
19
19
 
20
20
  class StopWorkflowRequestBuilder:
21
- def __init__(self) -> None:
22
- stop_Workflow_request = StopWorkflowRequest()
23
- stop_Workflow_request.http_method = HttpMethod.POST
24
- stop_Workflow_request.uri = "/v1/workflows/tasks/:task_id/stop"
25
- self._stop_workflow_request: StopWorkflowRequest = stop_Workflow_request
21
+ def __init__(self):
22
+ stop_workflow_request = StopWorkflowRequest()
23
+ stop_workflow_request.http_method = HttpMethod.POST
24
+ stop_workflow_request.uri = "/v1/workflows/tasks/:task_id/stop"
25
+ self._stop_workflow_request = stop_workflow_request
26
+
27
+ def build(self) -> StopWorkflowRequest:
28
+ return self._stop_workflow_request
26
29
 
27
30
  def task_id(self, task_id: str) -> StopWorkflowRequestBuilder:
28
31
  self._stop_workflow_request.task_id = task_id
29
- self._stop_workflow_request.paths["task_id"] = str(task_id)
32
+ self._stop_workflow_request.paths["task_id"] = task_id
30
33
  return self
31
34
 
32
35
  def request_body(self, request_body: StopWorkflowRequestBody) -> StopWorkflowRequestBuilder:
33
36
  self._stop_workflow_request.request_body = request_body
34
37
  self._stop_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
35
38
  return self
36
-
37
- def build(self) -> StopWorkflowRequest:
38
- return self._stop_workflow_request
@@ -15,9 +15,9 @@ class StopWorkflowRequestBodyBuilder:
15
15
  def __init__(self):
16
16
  self._stop_workflow_request_body = StopWorkflowRequestBody()
17
17
 
18
+ def build(self) -> StopWorkflowRequestBody:
19
+ return self._stop_workflow_request_body
20
+
18
21
  def user(self, user: str) -> StopWorkflowRequestBodyBuilder:
19
22
  self._stop_workflow_request_body.user = user
20
23
  return self
21
-
22
- def build(self) -> StopWorkflowRequestBody:
23
- return self._stop_workflow_request_body
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  from dify_oapi.core.model.base_response import BaseResponse
2
4
 
3
5
 
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .workflow_types import EventType
8
+
9
+
10
+ class StreamingEvent(BaseModel):
11
+ event: EventType | None = None
12
+ task_id: str | None = None
13
+ workflow_run_id: str | None = None
14
+ data: dict[str, Any] | None = None
15
+
16
+ @staticmethod
17
+ def builder() -> StreamingEventBuilder:
18
+ return StreamingEventBuilder()
19
+
20
+
21
+ class StreamingEventBuilder:
22
+ def __init__(self):
23
+ self._streaming_event = StreamingEvent()
24
+
25
+ def build(self) -> StreamingEvent:
26
+ return self._streaming_event
27
+
28
+ def event(self, event: EventType) -> StreamingEventBuilder:
29
+ self._streaming_event.event = event
30
+ return self
31
+
32
+ def task_id(self, task_id: str) -> StreamingEventBuilder:
33
+ self._streaming_event.task_id = task_id
34
+ return self
35
+
36
+ def workflow_run_id(self, workflow_run_id: str) -> StreamingEventBuilder:
37
+ self._streaming_event.workflow_run_id = workflow_run_id
38
+ return self
39
+
40
+ def data(self, data: dict[str, Any]) -> StreamingEventBuilder:
41
+ self._streaming_event.data = data
42
+ return self
@@ -0,0 +1,40 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .workflow_types import FileType, TransferMethod
6
+
7
+
8
+ class WorkflowFileInfo(BaseModel):
9
+ type: FileType | None = None
10
+ transfer_method: TransferMethod | None = None
11
+ url: str | None = None
12
+ upload_file_id: str | None = None
13
+
14
+ @staticmethod
15
+ def builder() -> WorkflowFileInfoBuilder:
16
+ return WorkflowFileInfoBuilder()
17
+
18
+
19
+ class WorkflowFileInfoBuilder:
20
+ def __init__(self):
21
+ self._workflow_file_info = WorkflowFileInfo()
22
+
23
+ def build(self) -> WorkflowFileInfo:
24
+ return self._workflow_file_info
25
+
26
+ def type(self, type: FileType) -> WorkflowFileInfoBuilder:
27
+ self._workflow_file_info.type = type
28
+ return self
29
+
30
+ def transfer_method(self, transfer_method: TransferMethod) -> WorkflowFileInfoBuilder:
31
+ self._workflow_file_info.transfer_method = transfer_method
32
+ return self
33
+
34
+ def url(self, url: str) -> WorkflowFileInfoBuilder:
35
+ self._workflow_file_info.url = url
36
+ return self
37
+
38
+ def upload_file_id(self, upload_file_id: str) -> WorkflowFileInfoBuilder:
39
+ self._workflow_file_info.upload_file_id = upload_file_id
40
+ return self
@@ -0,0 +1,56 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Union
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .workflow_file_info import WorkflowFileInfo
8
+
9
+ # Define specific types for workflow input values
10
+ WorkflowInputValue = Union[
11
+ str, # Text values
12
+ int, # Integer values
13
+ float, # Float values
14
+ bool, # Boolean values
15
+ list[WorkflowFileInfo], # File list type variables
16
+ list[str], # String arrays
17
+ dict[str, Union[str, int, float, bool]], # Object values
18
+ ]
19
+
20
+
21
+ class WorkflowInputs(BaseModel):
22
+ # Dynamic inputs based on workflow configuration
23
+ # Can contain any key-value pairs defined by the workflow
24
+ inputs: dict[str, WorkflowInputValue] | None = None
25
+
26
+ @staticmethod
27
+ def builder() -> WorkflowInputsBuilder:
28
+ return WorkflowInputsBuilder()
29
+
30
+ def add_input(self, key: str, value: WorkflowInputValue) -> None:
31
+ if self.inputs is None:
32
+ self.inputs = {}
33
+ self.inputs[key] = value
34
+
35
+ def get_input(self, key: str) -> WorkflowInputValue | None:
36
+ if self.inputs is None:
37
+ return None
38
+ return self.inputs.get(key)
39
+
40
+
41
+ class WorkflowInputsBuilder:
42
+ def __init__(self):
43
+ self._workflow_inputs = WorkflowInputs()
44
+
45
+ def build(self) -> WorkflowInputs:
46
+ return self._workflow_inputs
47
+
48
+ def inputs(self, inputs: dict[str, WorkflowInputValue]) -> WorkflowInputsBuilder:
49
+ self._workflow_inputs.inputs = inputs
50
+ return self
51
+
52
+ def add_input(self, key: str, value: WorkflowInputValue) -> WorkflowInputsBuilder:
53
+ if self._workflow_inputs.inputs is None:
54
+ self._workflow_inputs.inputs = {}
55
+ self._workflow_inputs.inputs[key] = value
56
+ return self