dify-oapi2 0.1.1__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 (140) hide show
  1. dify_oapi/api/completion/v1/model/annotation/annotation_info.py +43 -0
  2. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request.py +39 -0
  3. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request_body.py +33 -0
  4. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_response.py +9 -0
  5. dify_oapi/api/completion/v1/model/annotation/create_annotation_request.py +32 -0
  6. dify_oapi/api/completion/v1/model/annotation/create_annotation_request_body.py +28 -0
  7. dify_oapi/api/completion/v1/model/annotation/create_annotation_response.py +9 -0
  8. dify_oapi/api/completion/v1/model/annotation/delete_annotation_request.py +30 -0
  9. dify_oapi/api/completion/v1/model/annotation/delete_annotation_response.py +7 -0
  10. dify_oapi/api/completion/v1/model/annotation/job_status_info.py +35 -0
  11. dify_oapi/api/completion/v1/model/annotation/list_annotations_request.py +32 -0
  12. dify_oapi/api/completion/v1/model/annotation/list_annotations_response.py +13 -0
  13. dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_request.py +38 -0
  14. dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_response.py +9 -0
  15. dify_oapi/api/completion/v1/model/annotation/update_annotation_request.py +38 -0
  16. dify_oapi/api/completion/v1/model/annotation/update_annotation_request_body.py +28 -0
  17. dify_oapi/api/completion/v1/model/annotation/update_annotation_response.py +9 -0
  18. dify_oapi/api/completion/v1/model/audio/audio_info.py +28 -0
  19. dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +32 -0
  20. dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +33 -0
  21. dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +9 -0
  22. dify_oapi/api/completion/v1/model/completion/completion_inputs.py +28 -0
  23. dify_oapi/api/completion/v1/model/completion/completion_message_info.py +46 -0
  24. dify_oapi/api/completion/v1/model/completion/completion_types.py +27 -0
  25. dify_oapi/api/completion/v1/model/completion/metadata.py +31 -0
  26. dify_oapi/api/completion/v1/model/completion/retriever_resource.py +58 -0
  27. dify_oapi/api/completion/v1/model/completion/send_message_request.py +32 -0
  28. dify_oapi/api/completion/v1/model/completion/send_message_request_body.py +76 -0
  29. dify_oapi/api/completion/v1/model/completion/send_message_response.py +9 -0
  30. dify_oapi/api/completion/v1/model/completion/stop_response_request.py +38 -0
  31. dify_oapi/api/completion/v1/model/completion/stop_response_request_body.py +23 -0
  32. dify_oapi/api/completion/v1/model/{stop_completion_response.py → completion/stop_response_response.py} +3 -1
  33. dify_oapi/api/completion/v1/model/completion/usage.py +78 -0
  34. dify_oapi/api/completion/v1/model/feedback/feedback_info.py +53 -0
  35. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_request.py +32 -0
  36. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +9 -0
  37. dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +38 -0
  38. dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +35 -0
  39. dify_oapi/api/completion/v1/model/feedback/message_feedback_response.py +7 -0
  40. dify_oapi/api/completion/v1/model/file/file_info.py +53 -0
  41. dify_oapi/api/completion/v1/model/file/upload_file_request.py +42 -0
  42. dify_oapi/api/completion/v1/model/file/upload_file_request_body.py +23 -0
  43. dify_oapi/api/completion/v1/model/file/upload_file_response.py +9 -0
  44. dify_oapi/api/completion/v1/model/info/app_info.py +43 -0
  45. dify_oapi/api/completion/v1/model/info/file_upload_config.py +23 -0
  46. dify_oapi/api/completion/v1/model/info/get_info_request.py +24 -0
  47. dify_oapi/api/completion/v1/model/info/get_info_response.py +9 -0
  48. dify_oapi/api/completion/v1/model/info/get_parameters_request.py +24 -0
  49. dify_oapi/api/completion/v1/model/info/get_parameters_response.py +9 -0
  50. dify_oapi/api/completion/v1/model/info/get_site_request.py +24 -0
  51. dify_oapi/api/completion/v1/model/info/get_site_response.py +9 -0
  52. dify_oapi/api/completion/v1/model/info/parameters_info.py +67 -0
  53. dify_oapi/api/completion/v1/model/info/site_info.py +90 -0
  54. dify_oapi/api/completion/v1/model/info/system_parameters.py +38 -0
  55. dify_oapi/api/completion/v1/model/info/user_input_form.py +43 -0
  56. dify_oapi/api/completion/v1/resource/__init__.py +5 -0
  57. dify_oapi/api/completion/v1/resource/annotation.py +99 -0
  58. dify_oapi/api/completion/v1/resource/audio.py +19 -0
  59. dify_oapi/api/completion/v1/resource/completion.py +36 -46
  60. dify_oapi/api/completion/v1/resource/feedback.py +33 -0
  61. dify_oapi/api/completion/v1/resource/file.py +19 -0
  62. dify_oapi/api/completion/v1/resource/info.py +39 -0
  63. dify_oapi/api/completion/v1/version.py +11 -1
  64. dify_oapi/api/knowledge_base/v1/model/dataset/create_request_body.py +3 -4
  65. dify_oapi/api/knowledge_base/v1/model/dataset/dataset_types.py +36 -0
  66. dify_oapi/api/knowledge_base/v1/model/dataset/retrieval_model.py +3 -6
  67. dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request_body.py +7 -12
  68. dify_oapi/api/knowledge_base/v1/model/document/document_types.py +36 -0
  69. dify_oapi/api/knowledge_base/v1/model/metadata/metadata_types.py +15 -0
  70. dify_oapi/api/knowledge_base/v1/model/segment/segment_types.py +24 -0
  71. dify_oapi/api/knowledge_base/v1/model/tag/tag_types.py +12 -0
  72. dify_oapi/api/knowledge_base/v1/model/tag/update_response.py +5 -1
  73. dify_oapi/api/workflow/v1/model/file/__init__.py +1 -0
  74. dify_oapi/api/workflow/v1/model/file/file_info.py +53 -0
  75. dify_oapi/api/workflow/v1/model/file/preview_file_request.py +34 -0
  76. dify_oapi/api/workflow/v1/model/file/preview_file_response.py +9 -0
  77. dify_oapi/api/workflow/v1/model/file/upload_file_request.py +42 -0
  78. dify_oapi/api/workflow/v1/model/file/upload_file_request_body.py +23 -0
  79. dify_oapi/api/workflow/v1/model/file/upload_file_response.py +9 -0
  80. dify_oapi/api/workflow/v1/model/info/app_info.py +45 -0
  81. dify_oapi/api/workflow/v1/model/info/file_upload_config.py +45 -0
  82. dify_oapi/api/workflow/v1/model/info/get_info_request.py +24 -0
  83. dify_oapi/api/workflow/v1/model/info/get_info_response.py +9 -0
  84. dify_oapi/api/workflow/v1/model/info/get_parameters_request.py +24 -0
  85. dify_oapi/api/workflow/v1/model/info/get_parameters_response.py +9 -0
  86. dify_oapi/api/workflow/v1/model/info/get_site_request.py +24 -0
  87. dify_oapi/api/workflow/v1/model/info/get_site_response.py +9 -0
  88. dify_oapi/api/workflow/v1/model/info/parameters_info.py +37 -0
  89. dify_oapi/api/workflow/v1/model/info/site_info.py +75 -0
  90. dify_oapi/api/workflow/v1/model/info/system_parameters.py +38 -0
  91. dify_oapi/api/workflow/v1/model/info/user_input_form.py +43 -0
  92. dify_oapi/api/workflow/v1/model/log/__init__.py +0 -0
  93. dify_oapi/api/workflow/v1/model/log/end_user_info.py +38 -0
  94. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_request.py +48 -0
  95. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_response.py +13 -0
  96. dify_oapi/api/workflow/v1/model/log/log_info.py +57 -0
  97. dify_oapi/api/workflow/v1/model/log/workflow_run_log_info.py +65 -0
  98. dify_oapi/api/workflow/v1/model/workflow/execution_metadata.py +33 -0
  99. dify_oapi/api/workflow/v1/model/workflow/get_workflow_run_detail_request.py +30 -0
  100. dify_oapi/api/workflow/v1/model/{run_workflow_response.py → workflow/get_workflow_run_detail_response.py} +8 -11
  101. dify_oapi/api/workflow/v1/model/workflow/node_info.py +88 -0
  102. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +38 -0
  103. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +47 -0
  104. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +9 -0
  105. dify_oapi/api/workflow/v1/model/{run_workflow_request.py → workflow/run_workflow_request.py} +4 -4
  106. dify_oapi/api/workflow/v1/model/workflow/run_workflow_request_body.py +47 -0
  107. dify_oapi/api/workflow/v1/model/workflow/run_workflow_response.py +9 -0
  108. dify_oapi/api/workflow/v1/model/{stop_workflow_request.py → workflow/stop_workflow_request.py} +9 -9
  109. dify_oapi/api/workflow/v1/model/{stop_workflow_request_body.py → workflow/stop_workflow_request_body.py} +3 -3
  110. dify_oapi/api/workflow/v1/model/{stop_workflow_response.py → workflow/stop_workflow_response.py} +2 -0
  111. dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +42 -0
  112. dify_oapi/api/workflow/v1/model/workflow/workflow_file_info.py +40 -0
  113. dify_oapi/api/workflow/v1/model/workflow/workflow_inputs.py +56 -0
  114. dify_oapi/api/workflow/v1/model/workflow/workflow_run_data.py +72 -0
  115. dify_oapi/api/workflow/v1/model/workflow/workflow_run_info.py +35 -0
  116. dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +54 -0
  117. dify_oapi/api/workflow/v1/resource/__init__.py +0 -1
  118. dify_oapi/api/workflow/v1/resource/file.py +63 -0
  119. dify_oapi/api/workflow/v1/resource/info.py +93 -0
  120. dify_oapi/api/workflow/v1/resource/log.py +43 -0
  121. dify_oapi/api/workflow/v1/resource/workflow.py +171 -53
  122. dify_oapi/api/workflow/v1/version.py +7 -1
  123. dify_oapi/core/http/transport/_misc.py +54 -14
  124. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/METADATA +10 -6
  125. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/RECORD +127 -34
  126. dify_oapi/api/completion/v1/model/completion_request.py +0 -34
  127. dify_oapi/api/completion/v1/model/completion_request_body.py +0 -43
  128. dify_oapi/api/completion/v1/model/completion_request_body_input.py +0 -38
  129. dify_oapi/api/completion/v1/model/completion_request_file.py +0 -49
  130. dify_oapi/api/completion/v1/model/completion_response.py +0 -18
  131. dify_oapi/api/completion/v1/model/stop_completion_request.py +0 -38
  132. dify_oapi/api/completion/v1/model/stop_completion_request_body.py +0 -23
  133. dify_oapi/api/workflow/v1/model/get_workflow_log_request.py +0 -50
  134. dify_oapi/api/workflow/v1/model/get_workflow_log_response.py +0 -42
  135. dify_oapi/api/workflow/v1/model/get_workflow_result_request.py +0 -30
  136. dify_oapi/api/workflow/v1/model/get_workflow_result_response.py +0 -17
  137. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +0 -42
  138. dify_oapi/api/workflow/v1/model/run_workflow_request_file.py +0 -50
  139. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/LICENSE +0 -0
  140. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/WHEEL +0 -0
@@ -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
@@ -0,0 +1,72 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .workflow_types import WorkflowStatus
8
+
9
+
10
+ class WorkflowRunData(BaseModel):
11
+ id: str | None = None
12
+ workflow_id: str | None = None
13
+ status: WorkflowStatus | None = None
14
+ outputs: dict[str, Any] | None = None
15
+ error: str | None = None
16
+ elapsed_time: float | None = None
17
+ total_tokens: int | None = None
18
+ total_steps: int | None = None
19
+ created_at: int | None = None
20
+ finished_at: int | None = None
21
+
22
+ @staticmethod
23
+ def builder() -> WorkflowRunDataBuilder:
24
+ return WorkflowRunDataBuilder()
25
+
26
+
27
+ class WorkflowRunDataBuilder:
28
+ def __init__(self):
29
+ self._workflow_run_data = WorkflowRunData()
30
+
31
+ def build(self) -> WorkflowRunData:
32
+ return self._workflow_run_data
33
+
34
+ def id(self, id: str) -> WorkflowRunDataBuilder:
35
+ self._workflow_run_data.id = id
36
+ return self
37
+
38
+ def workflow_id(self, workflow_id: str) -> WorkflowRunDataBuilder:
39
+ self._workflow_run_data.workflow_id = workflow_id
40
+ return self
41
+
42
+ def status(self, status: WorkflowStatus) -> WorkflowRunDataBuilder:
43
+ self._workflow_run_data.status = status
44
+ return self
45
+
46
+ def outputs(self, outputs: dict[str, Any]) -> WorkflowRunDataBuilder:
47
+ self._workflow_run_data.outputs = outputs
48
+ return self
49
+
50
+ def error(self, error: str) -> WorkflowRunDataBuilder:
51
+ self._workflow_run_data.error = error
52
+ return self
53
+
54
+ def elapsed_time(self, elapsed_time: float) -> WorkflowRunDataBuilder:
55
+ self._workflow_run_data.elapsed_time = elapsed_time
56
+ return self
57
+
58
+ def total_tokens(self, total_tokens: int) -> WorkflowRunDataBuilder:
59
+ self._workflow_run_data.total_tokens = total_tokens
60
+ return self
61
+
62
+ def total_steps(self, total_steps: int) -> WorkflowRunDataBuilder:
63
+ self._workflow_run_data.total_steps = total_steps
64
+ return self
65
+
66
+ def created_at(self, created_at: int) -> WorkflowRunDataBuilder:
67
+ self._workflow_run_data.created_at = created_at
68
+ return self
69
+
70
+ def finished_at(self, finished_at: int) -> WorkflowRunDataBuilder:
71
+ self._workflow_run_data.finished_at = finished_at
72
+ return self
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .workflow_run_data import WorkflowRunData
6
+
7
+
8
+ class WorkflowRunInfo(BaseModel):
9
+ workflow_run_id: str | None = None
10
+ task_id: str | None = None
11
+ data: WorkflowRunData | None = None
12
+
13
+ @staticmethod
14
+ def builder() -> WorkflowRunInfoBuilder:
15
+ return WorkflowRunInfoBuilder()
16
+
17
+
18
+ class WorkflowRunInfoBuilder:
19
+ def __init__(self):
20
+ self._workflow_run_info = WorkflowRunInfo()
21
+
22
+ def build(self) -> WorkflowRunInfo:
23
+ return self._workflow_run_info
24
+
25
+ def workflow_run_id(self, workflow_run_id: str) -> WorkflowRunInfoBuilder:
26
+ self._workflow_run_info.workflow_run_id = workflow_run_id
27
+ return self
28
+
29
+ def task_id(self, task_id: str) -> WorkflowRunInfoBuilder:
30
+ self._workflow_run_info.task_id = task_id
31
+ return self
32
+
33
+ def data(self, data: WorkflowRunData) -> WorkflowRunInfoBuilder:
34
+ self._workflow_run_info.data = data
35
+ return self
@@ -0,0 +1,54 @@
1
+ from typing import Literal
2
+
3
+ # Response mode types
4
+ ResponseMode = Literal["streaming", "blocking"]
5
+
6
+ # File types
7
+ FileType = Literal["document", "image", "audio", "video", "custom"]
8
+
9
+ # Transfer method types
10
+ TransferMethod = Literal["remote_url", "local_file"]
11
+
12
+ # Workflow status types
13
+ WorkflowStatus = Literal["running", "succeeded", "failed", "stopped"]
14
+
15
+ # Event types
16
+ EventType = Literal[
17
+ "workflow_started",
18
+ "node_started",
19
+ "text_chunk",
20
+ "node_finished",
21
+ "workflow_finished",
22
+ "tts_message",
23
+ "tts_message_end",
24
+ "ping",
25
+ ]
26
+
27
+ # Node types
28
+ NodeType = Literal[
29
+ "start",
30
+ "end",
31
+ "llm",
32
+ "code",
33
+ "template",
34
+ "knowledge_retrieval",
35
+ "question_classifier",
36
+ "if_else",
37
+ "variable_assigner",
38
+ "parameter_extractor",
39
+ ]
40
+
41
+ # Icon types
42
+ IconType = Literal["emoji", "image"]
43
+
44
+ # App mode types
45
+ AppMode = Literal["workflow"]
46
+
47
+ # Log status types
48
+ LogStatus = Literal["succeeded", "failed", "stopped"]
49
+
50
+ # Created by role types
51
+ CreatedByRole = Literal["end_user", "account"]
52
+
53
+ # Created from types
54
+ CreatedFrom = Literal["service-api", "web-app"]
@@ -1 +0,0 @@
1
- from .workflow import * # noqa 403
@@ -0,0 +1,63 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.http.transport import ATransport, Transport
4
+ from dify_oapi.core.model.config import Config
5
+ from dify_oapi.core.model.request_option import RequestOption
6
+
7
+ from ..model.file.preview_file_request import PreviewFileRequest
8
+ from ..model.file.preview_file_response import PreviewFileResponse
9
+ from ..model.file.upload_file_request import UploadFileRequest
10
+ from ..model.file.upload_file_response import UploadFileResponse
11
+
12
+
13
+ class File:
14
+ def __init__(self, config: Config) -> None:
15
+ self.config = config
16
+
17
+ def upload_file(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
18
+ """Upload file for multimodal support.
19
+
20
+ Args:
21
+ request: The upload file request
22
+ request_option: Request options including API key
23
+
24
+ Returns:
25
+ UploadFileResponse with file information
26
+ """
27
+ return Transport.execute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
28
+
29
+ async def aupload_file(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
30
+ """Upload file for multimodal support asynchronously.
31
+
32
+ Args:
33
+ request: The upload file request
34
+ request_option: Request options including API key
35
+
36
+ Returns:
37
+ UploadFileResponse with file information
38
+ """
39
+ return await ATransport.aexecute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
40
+
41
+ def preview_file(self, request: PreviewFileRequest, request_option: RequestOption) -> PreviewFileResponse:
42
+ """Preview or download uploaded file.
43
+
44
+ Args:
45
+ request: The preview file request
46
+ request_option: Request options including API key
47
+
48
+ Returns:
49
+ PreviewFileResponse with file content
50
+ """
51
+ return Transport.execute(self.config, request, unmarshal_as=PreviewFileResponse, option=request_option)
52
+
53
+ async def apreview_file(self, request: PreviewFileRequest, request_option: RequestOption) -> PreviewFileResponse:
54
+ """Preview or download uploaded file asynchronously.
55
+
56
+ Args:
57
+ request: The preview file request
58
+ request_option: Request options including API key
59
+
60
+ Returns:
61
+ PreviewFileResponse with file content
62
+ """
63
+ return await ATransport.aexecute(self.config, request, unmarshal_as=PreviewFileResponse, option=request_option)