dify-oapi2 0.4.0__py3-none-any.whl → 0.5.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 (191) hide show
  1. dify_oapi/api/chat/v1/model/__init__.py +37 -0
  2. dify_oapi/api/chat/v1/model/agent_thought.py +69 -0
  3. dify_oapi/api/chat/v1/model/annotation_info.py +43 -0
  4. dify_oapi/api/chat/v1/model/app_info.py +35 -0
  5. dify_oapi/api/chat/v1/model/app_parameters.py +494 -0
  6. dify_oapi/api/chat/v1/model/audio_to_text_request_body.py +2 -2
  7. dify_oapi/api/chat/v1/model/chat_file.py +53 -0
  8. dify_oapi/api/chat/v1/model/chat_request_body.py +26 -13
  9. dify_oapi/api/chat/v1/model/chat_response.py +12 -2
  10. dify_oapi/api/chat/v1/model/chat_types.py +65 -0
  11. dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +36 -0
  12. dify_oapi/api/chat/v1/model/configure_annotation_reply_request_body.py +39 -0
  13. dify_oapi/api/chat/v1/model/configure_annotation_reply_response.py +10 -0
  14. dify_oapi/api/chat/v1/model/conversation_info.py +57 -0
  15. dify_oapi/api/chat/v1/model/conversation_variable.py +55 -0
  16. dify_oapi/api/chat/v1/model/create_annotation_request.py +29 -0
  17. dify_oapi/api/chat/v1/model/create_annotation_request_body.py +32 -0
  18. dify_oapi/api/chat/v1/model/create_annotation_response.py +9 -0
  19. dify_oapi/api/chat/v1/model/delete_annotation_request.py +26 -0
  20. dify_oapi/api/chat/v1/model/delete_annotation_response.py +7 -0
  21. dify_oapi/api/chat/v1/model/feedback_info.py +75 -0
  22. dify_oapi/api/chat/v1/model/file_info.py +59 -0
  23. dify_oapi/api/chat/v1/model/get_annotation_reply_status_request.py +32 -0
  24. dify_oapi/api/chat/v1/model/get_annotation_reply_status_response.py +11 -0
  25. dify_oapi/api/chat/v1/model/get_app_info_request.py +24 -0
  26. dify_oapi/api/chat/v1/model/get_app_info_response.py +9 -0
  27. dify_oapi/api/chat/v1/model/get_app_meta_request.py +24 -0
  28. dify_oapi/api/chat/v1/model/get_app_meta_response.py +9 -0
  29. dify_oapi/api/chat/v1/model/get_app_parameters_request.py +28 -0
  30. dify_oapi/api/chat/v1/model/get_app_parameters_response.py +9 -0
  31. dify_oapi/api/chat/v1/model/get_conversation_list_request.py +25 -24
  32. dify_oapi/api/chat/v1/model/get_conversation_list_response.py +4 -15
  33. dify_oapi/api/chat/v1/model/get_conversation_variables_request.py +54 -0
  34. dify_oapi/api/chat/v1/model/get_conversation_variables_response.py +10 -0
  35. dify_oapi/api/chat/v1/model/get_feedbacks_request.py +32 -0
  36. dify_oapi/api/chat/v1/model/get_feedbacks_response.py +7 -0
  37. dify_oapi/api/chat/v1/model/get_site_settings_request.py +24 -0
  38. dify_oapi/api/chat/v1/model/get_site_settings_response.py +9 -0
  39. dify_oapi/api/chat/v1/model/get_suggested_questions_request.py +36 -0
  40. dify_oapi/api/chat/v1/model/{message_suggested_response.py → get_suggested_questions_response.py} +1 -1
  41. dify_oapi/api/chat/v1/model/list_annotations_request.py +32 -0
  42. dify_oapi/api/chat/v1/model/list_annotations_response.py +11 -0
  43. dify_oapi/api/chat/v1/model/message_file.py +46 -0
  44. dify_oapi/api/chat/v1/model/message_history_request.py +24 -24
  45. dify_oapi/api/chat/v1/model/message_history_response.py +4 -43
  46. dify_oapi/api/chat/v1/model/message_info.py +73 -0
  47. dify_oapi/api/chat/v1/model/pagination_info.py +44 -0
  48. dify_oapi/api/chat/v1/model/rename_conversation_request_body.py +1 -1
  49. dify_oapi/api/chat/v1/model/retriever_resource.py +64 -0
  50. dify_oapi/api/chat/v1/model/site_settings.py +92 -0
  51. dify_oapi/api/chat/v1/model/submit_feedback_request.py +34 -0
  52. dify_oapi/api/chat/v1/model/submit_feedback_request_body.py +33 -0
  53. dify_oapi/api/chat/v1/model/submit_feedback_response.py +5 -0
  54. dify_oapi/api/chat/v1/model/text_to_audio_request.py +32 -0
  55. dify_oapi/api/chat/v1/model/text_to_audio_request_body.py +33 -0
  56. dify_oapi/api/chat/v1/model/text_to_audio_response.py +7 -0
  57. dify_oapi/api/chat/v1/model/tool_icon.py +52 -0
  58. dify_oapi/api/chat/v1/model/update_annotation_request.py +33 -0
  59. dify_oapi/api/chat/v1/model/update_annotation_request_body.py +32 -0
  60. dify_oapi/api/chat/v1/model/update_annotation_response.py +9 -0
  61. dify_oapi/api/chat/v1/model/upload_file_request.py +54 -0
  62. dify_oapi/api/chat/v1/model/upload_file_request_body.py +29 -0
  63. dify_oapi/api/chat/v1/model/upload_file_response.py +10 -0
  64. dify_oapi/api/chat/v1/model/usage_info.py +84 -0
  65. dify_oapi/api/chat/v1/resource/__init__.py +7 -3
  66. dify_oapi/api/chat/v1/resource/annotation.py +77 -0
  67. dify_oapi/api/chat/v1/resource/app.py +47 -0
  68. dify_oapi/api/chat/v1/resource/audio.py +13 -0
  69. dify_oapi/api/chat/v1/resource/chat.py +14 -0
  70. dify_oapi/api/chat/v1/resource/conversation.py +55 -9
  71. dify_oapi/api/chat/v1/resource/feedback.py +31 -0
  72. dify_oapi/api/chat/v1/resource/file.py +25 -0
  73. dify_oapi/api/chat/v1/resource/message.py +19 -15
  74. dify_oapi/api/chat/v1/version.py +8 -2
  75. dify_oapi/api/chatflow/__init__.py +0 -0
  76. dify_oapi/api/chatflow/service.py +25 -0
  77. dify_oapi/api/chatflow/v1/__init__.py +0 -0
  78. dify_oapi/api/chatflow/v1/model/__init__.py +0 -0
  79. dify_oapi/api/chatflow/v1/model/annotation_info.py +43 -0
  80. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request.py +37 -0
  81. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request_body.py +33 -0
  82. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_response.py +10 -0
  83. dify_oapi/api/chatflow/v1/model/annotation_reply_status_request.py +36 -0
  84. dify_oapi/api/chatflow/v1/model/annotation_reply_status_response.py +11 -0
  85. dify_oapi/api/chatflow/v1/model/app_info.py +33 -0
  86. dify_oapi/api/chatflow/v1/model/app_parameters.py +276 -0
  87. dify_oapi/api/chatflow/v1/model/audio_to_text_request.py +37 -0
  88. dify_oapi/api/chatflow/v1/model/audio_to_text_response.py +21 -0
  89. dify_oapi/api/chatflow/v1/model/chat_file.py +40 -0
  90. dify_oapi/api/chatflow/v1/model/chat_message.py +88 -0
  91. dify_oapi/api/chatflow/v1/model/chatflow_types.py +210 -0
  92. dify_oapi/api/chatflow/v1/model/conversation_info.py +53 -0
  93. dify_oapi/api/chatflow/v1/model/conversation_variable.py +55 -0
  94. dify_oapi/api/chatflow/v1/model/create_annotation_request.py +30 -0
  95. dify_oapi/api/chatflow/v1/model/create_annotation_request_body.py +28 -0
  96. dify_oapi/api/chatflow/v1/model/create_annotation_response.py +9 -0
  97. dify_oapi/api/chatflow/v1/model/delete_annotation_request.py +28 -0
  98. dify_oapi/api/chatflow/v1/model/delete_annotation_response.py +7 -0
  99. dify_oapi/api/chatflow/v1/model/delete_conversation_request.py +36 -0
  100. dify_oapi/api/chatflow/v1/model/delete_conversation_request_body.py +21 -0
  101. dify_oapi/api/chatflow/v1/model/delete_conversation_response.py +17 -0
  102. dify_oapi/api/chatflow/v1/model/feedback_info.py +75 -0
  103. dify_oapi/api/chatflow/v1/model/file_info.py +53 -0
  104. dify_oapi/api/chatflow/v1/model/get_annotations_request.py +30 -0
  105. dify_oapi/api/chatflow/v1/model/get_annotations_response.py +13 -0
  106. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_request.py +30 -0
  107. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_response.py +23 -0
  108. dify_oapi/api/chatflow/v1/model/get_conversation_messages_request.py +38 -0
  109. dify_oapi/api/chatflow/v1/model/get_conversation_messages_response.py +33 -0
  110. dify_oapi/api/chatflow/v1/model/get_conversation_variables_request.py +44 -0
  111. dify_oapi/api/chatflow/v1/model/get_conversation_variables_response.py +33 -0
  112. dify_oapi/api/chatflow/v1/model/get_conversations_request.py +40 -0
  113. dify_oapi/api/chatflow/v1/model/get_conversations_response.py +33 -0
  114. dify_oapi/api/chatflow/v1/model/get_info_request.py +22 -0
  115. dify_oapi/api/chatflow/v1/model/get_info_response.py +7 -0
  116. dify_oapi/api/chatflow/v1/model/get_meta_request.py +22 -0
  117. dify_oapi/api/chatflow/v1/model/get_meta_response.py +7 -0
  118. dify_oapi/api/chatflow/v1/model/get_parameters_request.py +22 -0
  119. dify_oapi/api/chatflow/v1/model/get_parameters_response.py +7 -0
  120. dify_oapi/api/chatflow/v1/model/get_site_request.py +22 -0
  121. dify_oapi/api/chatflow/v1/model/get_site_response.py +7 -0
  122. dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
  123. dify_oapi/api/chatflow/v1/model/get_suggested_questions_response.py +6 -0
  124. dify_oapi/api/chatflow/v1/model/message_feedback_request.py +36 -0
  125. dify_oapi/api/chatflow/v1/model/message_feedback_request_body.py +33 -0
  126. dify_oapi/api/chatflow/v1/model/message_feedback_response.py +21 -0
  127. dify_oapi/api/chatflow/v1/model/rename_conversation_request.py +36 -0
  128. dify_oapi/api/chatflow/v1/model/rename_conversation_request_body.py +31 -0
  129. dify_oapi/api/chatflow/v1/model/rename_conversation_response.py +53 -0
  130. dify_oapi/api/chatflow/v1/model/retriever_resource.py +58 -0
  131. dify_oapi/api/chatflow/v1/model/send_chat_message_request.py +30 -0
  132. dify_oapi/api/chatflow/v1/model/send_chat_message_request_body.py +54 -0
  133. dify_oapi/api/chatflow/v1/model/send_chat_message_response.py +7 -0
  134. dify_oapi/api/chatflow/v1/model/stop_chat_message_request.py +36 -0
  135. dify_oapi/api/chatflow/v1/model/stop_chat_message_request_body.py +21 -0
  136. dify_oapi/api/chatflow/v1/model/stop_chat_message_response.py +5 -0
  137. dify_oapi/api/chatflow/v1/model/text_to_audio_request.py +30 -0
  138. dify_oapi/api/chatflow/v1/model/text_to_audio_request_body.py +36 -0
  139. dify_oapi/api/chatflow/v1/model/text_to_audio_response.py +19 -0
  140. dify_oapi/api/chatflow/v1/model/tool_icon.py +48 -0
  141. dify_oapi/api/chatflow/v1/model/update_annotation_request.py +36 -0
  142. dify_oapi/api/chatflow/v1/model/update_annotation_request_body.py +28 -0
  143. dify_oapi/api/chatflow/v1/model/update_annotation_response.py +9 -0
  144. dify_oapi/api/chatflow/v1/model/upload_file_request.py +41 -0
  145. dify_oapi/api/chatflow/v1/model/upload_file_response.py +11 -0
  146. dify_oapi/api/chatflow/v1/model/usage_info.py +78 -0
  147. dify_oapi/api/chatflow/v1/model/user_input_form.py +141 -0
  148. dify_oapi/api/chatflow/v1/model/webapp_settings.py +88 -0
  149. dify_oapi/api/chatflow/v1/resource/__init__.py +0 -0
  150. dify_oapi/api/chatflow/v1/resource/annotation.py +122 -0
  151. dify_oapi/api/chatflow/v1/resource/application.py +76 -0
  152. dify_oapi/api/chatflow/v1/resource/chatflow.py +91 -0
  153. dify_oapi/api/chatflow/v1/resource/conversation.py +104 -0
  154. dify_oapi/api/chatflow/v1/resource/feedback.py +69 -0
  155. dify_oapi/api/chatflow/v1/resource/file.py +39 -0
  156. dify_oapi/api/chatflow/v1/resource/tts.py +29 -0
  157. dify_oapi/api/chatflow/v1/version.py +29 -0
  158. dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
  159. dify_oapi/api/knowledge/v1/model/dataset_info.py +10 -9
  160. dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
  161. dify_oapi/api/knowledge/v1/model/document_info.py +18 -6
  162. dify_oapi/api/knowledge/v1/model/external_knowledge_info.py +11 -1
  163. dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
  164. dify_oapi/api/knowledge/v1/model/knowledge_types.py +2 -2
  165. dify_oapi/api/knowledge/v1/model/retrieval_model.py +10 -4
  166. dify_oapi/api/knowledge/v1/model/weights.py +27 -0
  167. dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
  168. dify_oapi/api/workflow/v1/model/input_file_object_workflow.py +76 -0
  169. dify_oapi/api/workflow/v1/model/node_finished_data.py +118 -0
  170. dify_oapi/api/workflow/v1/model/node_started_data.py +81 -0
  171. dify_oapi/api/workflow/v1/model/ping_data.py +28 -0
  172. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +1 -1
  173. dify_oapi/api/workflow/v1/model/text_chunk_data.py +39 -0
  174. dify_oapi/api/workflow/v1/model/tts_message_data.py +45 -0
  175. dify_oapi/api/workflow/v1/model/tts_message_end_data.py +45 -0
  176. dify_oapi/api/workflow/v1/model/workflow_completion_response.py +50 -0
  177. dify_oapi/api/workflow/v1/model/workflow_finished_data.py +93 -0
  178. dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
  179. dify_oapi/api/workflow/v1/model/workflow_types.py +27 -12
  180. dify_oapi/client.py +45 -0
  181. dify_oapi/core/http/transport/__init__.py +2 -1
  182. dify_oapi/core/http/transport/async_transport.py +73 -50
  183. dify_oapi/core/http/transport/connection_pool.py +131 -0
  184. dify_oapi/core/http/transport/sync_transport.py +73 -50
  185. dify_oapi/core/model/config.py +10 -0
  186. {dify_oapi2-0.4.0.dist-info → dify_oapi2-0.5.0.dist-info}/METADATA +44 -12
  187. {dify_oapi2-0.4.0.dist-info → dify_oapi2-0.5.0.dist-info}/RECORD +189 -34
  188. dify_oapi/api/chat/v1/model/chat_request_file.py +0 -46
  189. dify_oapi/api/chat/v1/model/message_suggested_request.py +0 -36
  190. {dify_oapi2-0.4.0.dist-info → dify_oapi2-0.5.0.dist-info}/LICENSE +0 -0
  191. {dify_oapi2-0.4.0.dist-info → dify_oapi2-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,84 @@
1
+ """Usage information model for Chat API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pydantic import BaseModel
6
+
7
+
8
+ class UsageInfo(BaseModel):
9
+ """Usage information model."""
10
+
11
+ prompt_tokens: int | None = None
12
+ prompt_unit_price: str | None = None
13
+ prompt_price_unit: str | None = None
14
+ prompt_price: str | None = None
15
+ completion_tokens: int | None = None
16
+ completion_unit_price: str | None = None
17
+ completion_price_unit: str | None = None
18
+ completion_price: str | None = None
19
+ total_tokens: int | None = None
20
+ total_price: str | None = None
21
+ currency: str | None = None
22
+ latency: float | None = None
23
+
24
+ @staticmethod
25
+ def builder() -> UsageInfoBuilder:
26
+ return UsageInfoBuilder()
27
+
28
+
29
+ class UsageInfoBuilder:
30
+ """Builder for UsageInfo."""
31
+
32
+ def __init__(self):
33
+ self._usage_info = UsageInfo()
34
+
35
+ def build(self) -> UsageInfo:
36
+ return self._usage_info
37
+
38
+ def prompt_tokens(self, prompt_tokens: int) -> UsageInfoBuilder:
39
+ self._usage_info.prompt_tokens = prompt_tokens
40
+ return self
41
+
42
+ def prompt_unit_price(self, prompt_unit_price: str) -> UsageInfoBuilder:
43
+ self._usage_info.prompt_unit_price = prompt_unit_price
44
+ return self
45
+
46
+ def prompt_price_unit(self, prompt_price_unit: str) -> UsageInfoBuilder:
47
+ self._usage_info.prompt_price_unit = prompt_price_unit
48
+ return self
49
+
50
+ def prompt_price(self, prompt_price: str) -> UsageInfoBuilder:
51
+ self._usage_info.prompt_price = prompt_price
52
+ return self
53
+
54
+ def completion_tokens(self, completion_tokens: int) -> UsageInfoBuilder:
55
+ self._usage_info.completion_tokens = completion_tokens
56
+ return self
57
+
58
+ def completion_unit_price(self, completion_unit_price: str) -> UsageInfoBuilder:
59
+ self._usage_info.completion_unit_price = completion_unit_price
60
+ return self
61
+
62
+ def completion_price_unit(self, completion_price_unit: str) -> UsageInfoBuilder:
63
+ self._usage_info.completion_price_unit = completion_price_unit
64
+ return self
65
+
66
+ def completion_price(self, completion_price: str) -> UsageInfoBuilder:
67
+ self._usage_info.completion_price = completion_price
68
+ return self
69
+
70
+ def total_tokens(self, total_tokens: int) -> UsageInfoBuilder:
71
+ self._usage_info.total_tokens = total_tokens
72
+ return self
73
+
74
+ def total_price(self, total_price: str) -> UsageInfoBuilder:
75
+ self._usage_info.total_price = total_price
76
+ return self
77
+
78
+ def currency(self, currency: str) -> UsageInfoBuilder:
79
+ self._usage_info.currency = currency
80
+ return self
81
+
82
+ def latency(self, latency: float) -> UsageInfoBuilder:
83
+ self._usage_info.latency = latency
84
+ return self
@@ -1,4 +1,8 @@
1
+ from .annotation import * # noqa F403
2
+ from .app import * # noqa F403
3
+ from .audio import * # noqa F403
1
4
  from .chat import * # noqa F403
2
- from .conversation import * # noqa 403
3
- from .message import * # noqa 403
4
- from .audio import * # noqa 403
5
+ from .conversation import * # noqa F403
6
+ from .feedback import * # noqa F403
7
+ from .file import * # noqa F403
8
+ from .message import * # noqa F403
@@ -0,0 +1,77 @@
1
+ from dify_oapi.core.http.transport import ATransport, Transport
2
+ from dify_oapi.core.model.config import Config
3
+ from dify_oapi.core.model.request_option import RequestOption
4
+
5
+ from ..model.configure_annotation_reply_request import ConfigureAnnotationReplyRequest
6
+ from ..model.configure_annotation_reply_response import ConfigureAnnotationReplyResponse
7
+ from ..model.create_annotation_request import CreateAnnotationRequest
8
+ from ..model.create_annotation_response import CreateAnnotationResponse
9
+ from ..model.delete_annotation_request import DeleteAnnotationRequest
10
+ from ..model.delete_annotation_response import DeleteAnnotationResponse
11
+ from ..model.get_annotation_reply_status_request import GetAnnotationReplyStatusRequest
12
+ from ..model.get_annotation_reply_status_response import GetAnnotationReplyStatusResponse
13
+ from ..model.list_annotations_request import ListAnnotationsRequest
14
+ from ..model.list_annotations_response import ListAnnotationsResponse
15
+ from ..model.update_annotation_request import UpdateAnnotationRequest
16
+ from ..model.update_annotation_response import UpdateAnnotationResponse
17
+
18
+
19
+ class Annotation:
20
+ def __init__(self, config: Config) -> None:
21
+ self.config: Config = config
22
+
23
+ def list(self, request: ListAnnotationsRequest, option: RequestOption | None = None) -> ListAnnotationsResponse:
24
+ return Transport.execute(self.config, request, unmarshal_as=ListAnnotationsResponse, option=option)
25
+
26
+ async def alist(
27
+ self, request: ListAnnotationsRequest, option: RequestOption | None = None
28
+ ) -> ListAnnotationsResponse:
29
+ return await ATransport.aexecute(self.config, request, unmarshal_as=ListAnnotationsResponse, option=option)
30
+
31
+ def create(self, request: CreateAnnotationRequest, option: RequestOption | None = None) -> CreateAnnotationResponse:
32
+ return Transport.execute(self.config, request, unmarshal_as=CreateAnnotationResponse, option=option)
33
+
34
+ async def acreate(
35
+ self, request: CreateAnnotationRequest, option: RequestOption | None = None
36
+ ) -> CreateAnnotationResponse:
37
+ return await ATransport.aexecute(self.config, request, unmarshal_as=CreateAnnotationResponse, option=option)
38
+
39
+ def update(self, request: UpdateAnnotationRequest, option: RequestOption | None = None) -> UpdateAnnotationResponse:
40
+ return Transport.execute(self.config, request, unmarshal_as=UpdateAnnotationResponse, option=option)
41
+
42
+ async def aupdate(
43
+ self, request: UpdateAnnotationRequest, option: RequestOption | None = None
44
+ ) -> UpdateAnnotationResponse:
45
+ return await ATransport.aexecute(self.config, request, unmarshal_as=UpdateAnnotationResponse, option=option)
46
+
47
+ def delete(self, request: DeleteAnnotationRequest, option: RequestOption | None = None) -> DeleteAnnotationResponse:
48
+ return Transport.execute(self.config, request, unmarshal_as=DeleteAnnotationResponse, option=option)
49
+
50
+ async def adelete(
51
+ self, request: DeleteAnnotationRequest, option: RequestOption | None = None
52
+ ) -> DeleteAnnotationResponse:
53
+ return await ATransport.aexecute(self.config, request, unmarshal_as=DeleteAnnotationResponse, option=option)
54
+
55
+ def configure(
56
+ self, request: ConfigureAnnotationReplyRequest, option: RequestOption | None = None
57
+ ) -> ConfigureAnnotationReplyResponse:
58
+ return Transport.execute(self.config, request, unmarshal_as=ConfigureAnnotationReplyResponse, option=option)
59
+
60
+ async def aconfigure(
61
+ self, request: ConfigureAnnotationReplyRequest, option: RequestOption | None = None
62
+ ) -> ConfigureAnnotationReplyResponse:
63
+ return await ATransport.aexecute(
64
+ self.config, request, unmarshal_as=ConfigureAnnotationReplyResponse, option=option
65
+ )
66
+
67
+ def status(
68
+ self, request: GetAnnotationReplyStatusRequest, option: RequestOption | None = None
69
+ ) -> GetAnnotationReplyStatusResponse:
70
+ return Transport.execute(self.config, request, unmarshal_as=GetAnnotationReplyStatusResponse, option=option)
71
+
72
+ async def astatus(
73
+ self, request: GetAnnotationReplyStatusRequest, option: RequestOption | None = None
74
+ ) -> GetAnnotationReplyStatusResponse:
75
+ return await ATransport.aexecute(
76
+ self.config, request, unmarshal_as=GetAnnotationReplyStatusResponse, option=option
77
+ )
@@ -0,0 +1,47 @@
1
+ from dify_oapi.core.http.transport import ATransport, Transport
2
+ from dify_oapi.core.model.config import Config
3
+ from dify_oapi.core.model.request_option import RequestOption
4
+
5
+ from ..model.get_app_info_request import GetAppInfoRequest
6
+ from ..model.get_app_info_response import GetAppInfoResponse
7
+ from ..model.get_app_meta_request import GetAppMetaRequest
8
+ from ..model.get_app_meta_response import GetAppMetaResponse
9
+ from ..model.get_app_parameters_request import GetAppParametersRequest
10
+ from ..model.get_app_parameters_response import GetAppParametersResponse
11
+ from ..model.get_site_settings_request import GetSiteSettingsRequest
12
+ from ..model.get_site_settings_response import GetSiteSettingsResponse
13
+
14
+
15
+ class App:
16
+ def __init__(self, config: Config) -> None:
17
+ self.config: Config = config
18
+
19
+ def info(self, request: GetAppInfoRequest, option: RequestOption | None = None) -> GetAppInfoResponse:
20
+ return Transport.execute(self.config, request, unmarshal_as=GetAppInfoResponse, option=option)
21
+
22
+ async def ainfo(self, request: GetAppInfoRequest, option: RequestOption | None = None) -> GetAppInfoResponse:
23
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetAppInfoResponse, option=option)
24
+
25
+ def parameters(
26
+ self, request: GetAppParametersRequest, option: RequestOption | None = None
27
+ ) -> GetAppParametersResponse:
28
+ return Transport.execute(self.config, request, unmarshal_as=GetAppParametersResponse, option=option)
29
+
30
+ async def aparameters(
31
+ self, request: GetAppParametersRequest, option: RequestOption | None = None
32
+ ) -> GetAppParametersResponse:
33
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetAppParametersResponse, option=option)
34
+
35
+ def meta(self, request: GetAppMetaRequest, option: RequestOption | None = None) -> GetAppMetaResponse:
36
+ return Transport.execute(self.config, request, unmarshal_as=GetAppMetaResponse, option=option)
37
+
38
+ async def ameta(self, request: GetAppMetaRequest, option: RequestOption | None = None) -> GetAppMetaResponse:
39
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetAppMetaResponse, option=option)
40
+
41
+ def site(self, request: GetSiteSettingsRequest, option: RequestOption | None = None) -> GetSiteSettingsResponse:
42
+ return Transport.execute(self.config, request, unmarshal_as=GetSiteSettingsResponse, option=option)
43
+
44
+ async def asite(
45
+ self, request: GetSiteSettingsRequest, option: RequestOption | None = None
46
+ ) -> GetSiteSettingsResponse:
47
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetSiteSettingsResponse, option=option)
@@ -4,6 +4,7 @@ from dify_oapi.core.model.request_option import RequestOption
4
4
 
5
5
  from ..model.audio_to_text_request import AudioToTextRequest
6
6
  from ..model.audio_to_text_response import AudioToTextResponse
7
+ from ..model.text_to_audio_request import TextToAudioRequest
7
8
 
8
9
 
9
10
  class Audio:
@@ -15,3 +16,15 @@ class Audio:
15
16
 
16
17
  async def ato_text(self, request: AudioToTextRequest, option: RequestOption | None = None) -> AudioToTextResponse:
17
18
  return await ATransport.aexecute(self.config, request, unmarshal_as=AudioToTextResponse, option=option)
19
+
20
+ def to_audio(self, request: TextToAudioRequest, option: RequestOption | None = None) -> bytes:
21
+ response = Transport.execute(self.config, request, option=option)
22
+ if hasattr(response, "content") and response.content is not None:
23
+ return bytes(response.content)
24
+ return b""
25
+
26
+ async def ato_audio(self, request: TextToAudioRequest, option: RequestOption | None = None) -> bytes:
27
+ response = await ATransport.aexecute(self.config, request, option=option)
28
+ if hasattr(response, "content") and response.content is not None:
29
+ return bytes(response.content)
30
+ return b""
@@ -7,6 +7,8 @@ from dify_oapi.core.model.request_option import RequestOption
7
7
 
8
8
  from ..model.chat_request import ChatRequest
9
9
  from ..model.chat_response import ChatResponse
10
+ from ..model.get_suggested_questions_request import GetSuggestedQuestionsRequest
11
+ from ..model.get_suggested_questions_response import GetSuggestedQuestionsResponse
10
12
  from ..model.stop_chat_request import StopChatRequest
11
13
  from ..model.stop_chat_response import StopChatResponse
12
14
 
@@ -66,3 +68,15 @@ class Chat:
66
68
 
67
69
  async def astop(self, request: StopChatRequest, option: RequestOption | None = None) -> StopChatResponse:
68
70
  return await ATransport.aexecute(self.config, request, unmarshal_as=StopChatResponse, option=option)
71
+
72
+ def suggested(
73
+ self, request: GetSuggestedQuestionsRequest, option: RequestOption | None = None
74
+ ) -> GetSuggestedQuestionsResponse:
75
+ return Transport.execute(self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=option)
76
+
77
+ async def asuggested(
78
+ self, request: GetSuggestedQuestionsRequest, option: RequestOption | None = None
79
+ ) -> GetSuggestedQuestionsResponse:
80
+ return await ATransport.aexecute(
81
+ self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=option
82
+ )
@@ -4,8 +4,12 @@ from dify_oapi.core.model.request_option import RequestOption
4
4
 
5
5
  from ..model.delete_conversation_request import DeleteConversationRequest
6
6
  from ..model.delete_conversation_response import DeleteConversationResponse
7
- from ..model.get_conversation_list_request import GetConversationListRequest
8
- from ..model.get_conversation_list_response import GetConversationListResponse
7
+ from ..model.get_conversation_list_request import GetConversationsRequest
8
+ from ..model.get_conversation_list_response import GetConversationsResponse
9
+ from ..model.get_conversation_variables_request import GetConversationVariablesRequest
10
+ from ..model.get_conversation_variables_response import GetConversationVariablesResponse
11
+ from ..model.message_history_request import GetMessageHistoryRequest
12
+ from ..model.message_history_response import GetMessageHistoryResponse
9
13
  from ..model.rename_conversation_request import RenameConversationRequest
10
14
  from ..model.rename_conversation_response import RenameConversationResponse
11
15
 
@@ -14,25 +18,67 @@ class Conversation:
14
18
  def __init__(self, config: Config) -> None:
15
19
  self.config: Config = config
16
20
 
17
- def list(
18
- self, request: GetConversationListRequest, option: RequestOption | None = None
19
- ) -> GetConversationListResponse:
21
+ def list(self, request: GetConversationsRequest, option: RequestOption | None = None) -> GetConversationsResponse:
20
22
  # Send request
21
23
  return Transport.execute(
22
24
  self.config,
23
25
  request,
24
- unmarshal_as=GetConversationListResponse,
26
+ unmarshal_as=GetConversationsResponse,
25
27
  option=option,
26
28
  )
27
29
 
28
30
  async def alist(
29
- self, request: GetConversationListRequest, option: RequestOption | None = None
30
- ) -> GetConversationListResponse:
31
+ self, request: GetConversationsRequest, option: RequestOption | None = None
32
+ ) -> GetConversationsResponse:
31
33
  # Send request
32
34
  return await ATransport.aexecute(
33
35
  self.config,
34
36
  request,
35
- unmarshal_as=GetConversationListResponse,
37
+ unmarshal_as=GetConversationsResponse,
38
+ option=option,
39
+ )
40
+
41
+ def history(
42
+ self, request: GetMessageHistoryRequest, option: RequestOption | None = None
43
+ ) -> GetMessageHistoryResponse:
44
+ # Send request
45
+ return Transport.execute(
46
+ self.config,
47
+ request,
48
+ unmarshal_as=GetMessageHistoryResponse,
49
+ option=option,
50
+ )
51
+
52
+ async def ahistory(
53
+ self, request: GetMessageHistoryRequest, option: RequestOption | None = None
54
+ ) -> GetMessageHistoryResponse:
55
+ # Send request
56
+ return await ATransport.aexecute(
57
+ self.config,
58
+ request,
59
+ unmarshal_as=GetMessageHistoryResponse,
60
+ option=option,
61
+ )
62
+
63
+ def variables(
64
+ self, request: GetConversationVariablesRequest, option: RequestOption | None = None
65
+ ) -> GetConversationVariablesResponse:
66
+ # Send request
67
+ return Transport.execute(
68
+ self.config,
69
+ request,
70
+ unmarshal_as=GetConversationVariablesResponse,
71
+ option=option,
72
+ )
73
+
74
+ async def avariables(
75
+ self, request: GetConversationVariablesRequest, option: RequestOption | None = None
76
+ ) -> GetConversationVariablesResponse:
77
+ # Send request
78
+ return await ATransport.aexecute(
79
+ self.config,
80
+ request,
81
+ unmarshal_as=GetConversationVariablesResponse,
36
82
  option=option,
37
83
  )
38
84
 
@@ -0,0 +1,31 @@
1
+ from dify_oapi.core.http.transport import ATransport, Transport
2
+ from dify_oapi.core.model.config import Config
3
+ from dify_oapi.core.model.request_option import RequestOption
4
+
5
+ from ..model.get_feedbacks_request import GetFeedbacksRequest
6
+ from ..model.get_feedbacks_response import GetFeedbacksResponse
7
+ from ..model.submit_feedback_request import SubmitFeedbackRequest
8
+ from ..model.submit_feedback_response import SubmitFeedbackResponse
9
+
10
+
11
+ class Feedback:
12
+ def __init__(self, config: Config):
13
+ self.config = config
14
+
15
+ def submit(self, request: SubmitFeedbackRequest, option: RequestOption | None = None) -> SubmitFeedbackResponse:
16
+ """Submit feedback for a message."""
17
+ return Transport.execute(self.config, request, unmarshal_as=SubmitFeedbackResponse, option=option)
18
+
19
+ async def asubmit(
20
+ self, request: SubmitFeedbackRequest, option: RequestOption | None = None
21
+ ) -> SubmitFeedbackResponse:
22
+ """Submit feedback for a message asynchronously."""
23
+ return await ATransport.aexecute(self.config, request, unmarshal_as=SubmitFeedbackResponse, option=option)
24
+
25
+ def list(self, request: GetFeedbacksRequest, option: RequestOption | None = None) -> GetFeedbacksResponse:
26
+ """Get application feedbacks."""
27
+ return Transport.execute(self.config, request, unmarshal_as=GetFeedbacksResponse, option=option)
28
+
29
+ async def alist(self, request: GetFeedbacksRequest, option: RequestOption | None = None) -> GetFeedbacksResponse:
30
+ """Get application feedbacks asynchronously."""
31
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetFeedbacksResponse, option=option)
@@ -0,0 +1,25 @@
1
+ """File resource for chat API."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dify_oapi.api.chat.v1.model.upload_file_request import UploadFileRequest
6
+ from dify_oapi.api.chat.v1.model.upload_file_response import UploadFileResponse
7
+ from dify_oapi.core.http.transport import Transport
8
+ from dify_oapi.core.http.transport.async_transport import ATransport
9
+ from dify_oapi.core.model.config import Config
10
+ from dify_oapi.core.model.request_option import RequestOption
11
+
12
+
13
+ class File:
14
+ """File resource for handling file upload operations."""
15
+
16
+ def __init__(self, config: Config) -> None:
17
+ self.config = config
18
+
19
+ def upload(self, request: UploadFileRequest, option: RequestOption | None = None) -> UploadFileResponse:
20
+ """Upload a file for use in chat messages."""
21
+ return Transport.execute(self.config, request, unmarshal_as=UploadFileResponse, option=option)
22
+
23
+ async def aupload(self, request: UploadFileRequest, option: RequestOption | None = None) -> UploadFileResponse:
24
+ """Upload a file for use in chat messages (async)."""
25
+ return await ATransport.aexecute(self.config, request, unmarshal_as=UploadFileResponse, option=option)
@@ -2,10 +2,10 @@ from dify_oapi.core.http.transport import ATransport, Transport
2
2
  from dify_oapi.core.model.config import Config
3
3
  from dify_oapi.core.model.request_option import RequestOption
4
4
 
5
- from ..model.message_history_request import MessageHistoryRequest
6
- from ..model.message_history_response import MessageHistoryResponse
7
- from ..model.message_suggested_request import MessageSuggestedRequest
8
- from ..model.message_suggested_response import MessageSuggestedResponse
5
+ from ..model.get_suggested_questions_request import GetSuggestedQuestionsRequest
6
+ from ..model.get_suggested_questions_response import GetSuggestedQuestionsResponse
7
+ from ..model.message_history_request import GetMessageHistoryRequest
8
+ from ..model.message_history_response import GetMessageHistoryResponse
9
9
 
10
10
 
11
11
  class Message:
@@ -13,23 +13,27 @@ class Message:
13
13
  self.config: Config = config
14
14
 
15
15
  def suggested(
16
- self, request: MessageSuggestedRequest, option: RequestOption | None = None
17
- ) -> MessageSuggestedResponse:
16
+ self, request: GetSuggestedQuestionsRequest, option: RequestOption | None = None
17
+ ) -> GetSuggestedQuestionsResponse:
18
18
  # Send request
19
- return Transport.execute(self.config, request, unmarshal_as=MessageSuggestedResponse, option=option)
19
+ return Transport.execute(self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=option)
20
20
 
21
21
  async def asuggested(
22
- self, request: MessageSuggestedRequest, option: RequestOption | None = None
23
- ) -> MessageSuggestedResponse:
22
+ self, request: GetSuggestedQuestionsRequest, option: RequestOption | None = None
23
+ ) -> GetSuggestedQuestionsResponse:
24
24
  # Send request
25
- return await ATransport.aexecute(self.config, request, unmarshal_as=MessageSuggestedResponse, option=option)
25
+ return await ATransport.aexecute(
26
+ self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=option
27
+ )
26
28
 
27
- def history(self, request: MessageHistoryRequest, option: RequestOption | None = None) -> MessageHistoryResponse:
29
+ def history(
30
+ self, request: GetMessageHistoryRequest, option: RequestOption | None = None
31
+ ) -> GetMessageHistoryResponse:
28
32
  # Send request
29
- return Transport.execute(self.config, request, unmarshal_as=MessageHistoryResponse, option=option)
33
+ return Transport.execute(self.config, request, unmarshal_as=GetMessageHistoryResponse, option=option)
30
34
 
31
35
  async def ahistory(
32
- self, request: MessageHistoryRequest, option: RequestOption | None = None
33
- ) -> MessageHistoryResponse:
36
+ self, request: GetMessageHistoryRequest, option: RequestOption | None = None
37
+ ) -> GetMessageHistoryResponse:
34
38
  # Send request
35
- return await ATransport.aexecute(self.config, request, unmarshal_as=MessageHistoryResponse, option=option)
39
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetMessageHistoryResponse, option=option)
@@ -1,11 +1,17 @@
1
1
  from dify_oapi.core.model.config import Config
2
2
 
3
- from .resource import Audio, Chat, Conversation, Message
3
+ from .resource import Annotation, App, Audio, Chat, Conversation, Feedback, File, Message
4
4
 
5
5
 
6
6
  class V1:
7
7
  def __init__(self, config: Config):
8
8
  self.chat: Chat = Chat(config)
9
+ self.file: File = File(config)
10
+ self.feedback: Feedback = Feedback(config)
9
11
  self.conversation: Conversation = Conversation(config)
10
- self.message: Message = Message(config)
11
12
  self.audio: Audio = Audio(config)
13
+ self.app: App = App(config)
14
+ self.annotation: Annotation = Annotation(config)
15
+
16
+ # DEPRECATED: Keep for backward compatibility
17
+ self.message: Message = Message(config)
File without changes
@@ -0,0 +1,25 @@
1
+ from dify_oapi.core.model.config import Config
2
+
3
+ from .v1.version import V1
4
+
5
+
6
+ class ChatflowService:
7
+ """Chatflow API service providing access to all chatflow-related operations.
8
+
9
+ This service provides access to 17 chatflow APIs across 6 resource categories:
10
+ - Chatflow: 3 APIs (send, stop, suggested)
11
+ - File: 1 API (upload)
12
+ - Feedback: 2 APIs (message, list)
13
+ - Conversation: 5 APIs (messages, list, delete, rename, variables)
14
+ - TTS: 2 APIs (speech_to_text, text_to_audio)
15
+ - Application: 4 APIs (info, parameters, meta, site)
16
+ - Annotation: 6 APIs (list, create, update, delete, reply_settings, reply_status)
17
+ """
18
+
19
+ def __init__(self, config: Config):
20
+ """Initialize the Chatflow service with configuration.
21
+
22
+ Args:
23
+ config: The configuration object containing API settings
24
+ """
25
+ self.v1 = V1(config)
File without changes
File without changes
@@ -0,0 +1,43 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class AnnotationInfo(BaseModel):
5
+ """Annotation information model."""
6
+
7
+ id: str | None = None
8
+ question: str | None = None
9
+ answer: str | None = None
10
+ hit_count: int | None = None
11
+ created_at: int | None = None
12
+
13
+ @staticmethod
14
+ def builder() -> "AnnotationInfoBuilder":
15
+ return AnnotationInfoBuilder()
16
+
17
+
18
+ class AnnotationInfoBuilder:
19
+ def __init__(self):
20
+ self._annotation_info = AnnotationInfo()
21
+
22
+ def build(self) -> AnnotationInfo:
23
+ return self._annotation_info
24
+
25
+ def id(self, id: str) -> "AnnotationInfoBuilder":
26
+ self._annotation_info.id = id
27
+ return self
28
+
29
+ def question(self, question: str) -> "AnnotationInfoBuilder":
30
+ self._annotation_info.question = question
31
+ return self
32
+
33
+ def answer(self, answer: str) -> "AnnotationInfoBuilder":
34
+ self._annotation_info.answer = answer
35
+ return self
36
+
37
+ def hit_count(self, hit_count: int) -> "AnnotationInfoBuilder":
38
+ self._annotation_info.hit_count = hit_count
39
+ return self
40
+
41
+ def created_at(self, created_at: int) -> "AnnotationInfoBuilder":
42
+ self._annotation_info.created_at = created_at
43
+ return self
@@ -0,0 +1,37 @@
1
+ from dify_oapi.core.enum import HttpMethod
2
+ from dify_oapi.core.model.base_request import BaseRequest
3
+
4
+ from .annotation_reply_settings_request_body import AnnotationReplySettingsRequestBody
5
+ from .chatflow_types import AnnotationAction
6
+
7
+
8
+ class AnnotationReplySettingsRequest(BaseRequest):
9
+ def __init__(self):
10
+ super().__init__()
11
+ self.request_body: AnnotationReplySettingsRequestBody | None = None
12
+ self.action: AnnotationAction | None = None
13
+
14
+ @staticmethod
15
+ def builder() -> "AnnotationReplySettingsRequestBuilder":
16
+ return AnnotationReplySettingsRequestBuilder()
17
+
18
+
19
+ class AnnotationReplySettingsRequestBuilder:
20
+ def __init__(self):
21
+ annotation_reply_settings_request = AnnotationReplySettingsRequest()
22
+ annotation_reply_settings_request.http_method = HttpMethod.POST
23
+ annotation_reply_settings_request.uri = "/v1/apps/annotation-reply/:action"
24
+ self._annotation_reply_settings_request = annotation_reply_settings_request
25
+
26
+ def build(self) -> AnnotationReplySettingsRequest:
27
+ return self._annotation_reply_settings_request
28
+
29
+ def action(self, action: AnnotationAction) -> "AnnotationReplySettingsRequestBuilder":
30
+ self._annotation_reply_settings_request.action = action
31
+ self._annotation_reply_settings_request.paths["action"] = action
32
+ return self
33
+
34
+ def request_body(self, request_body: AnnotationReplySettingsRequestBody) -> "AnnotationReplySettingsRequestBuilder":
35
+ self._annotation_reply_settings_request.request_body = request_body
36
+ self._annotation_reply_settings_request.body = request_body.model_dump(exclude_none=True, mode="json")
37
+ return self
@@ -0,0 +1,33 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class AnnotationReplySettingsRequestBody(BaseModel):
5
+ """Request body for annotation reply settings."""
6
+
7
+ embedding_provider_name: str | None = None
8
+ embedding_model_name: str | None = None
9
+ score_threshold: float | None = None
10
+
11
+ @staticmethod
12
+ def builder() -> "AnnotationReplySettingsRequestBodyBuilder":
13
+ return AnnotationReplySettingsRequestBodyBuilder()
14
+
15
+
16
+ class AnnotationReplySettingsRequestBodyBuilder:
17
+ def __init__(self):
18
+ self._annotation_reply_settings_request_body = AnnotationReplySettingsRequestBody()
19
+
20
+ def build(self) -> AnnotationReplySettingsRequestBody:
21
+ return self._annotation_reply_settings_request_body
22
+
23
+ def embedding_provider_name(self, embedding_provider_name: str) -> "AnnotationReplySettingsRequestBodyBuilder":
24
+ self._annotation_reply_settings_request_body.embedding_provider_name = embedding_provider_name
25
+ return self
26
+
27
+ def embedding_model_name(self, embedding_model_name: str) -> "AnnotationReplySettingsRequestBodyBuilder":
28
+ self._annotation_reply_settings_request_body.embedding_model_name = embedding_model_name
29
+ return self
30
+
31
+ def score_threshold(self, score_threshold: float) -> "AnnotationReplySettingsRequestBodyBuilder":
32
+ self._annotation_reply_settings_request_body.score_threshold = score_threshold
33
+ return self
@@ -0,0 +1,10 @@
1
+ from dify_oapi.core.model.base_response import BaseResponse
2
+
3
+ from .chatflow_types import JobStatus
4
+
5
+
6
+ class AnnotationReplySettingsResponse(BaseResponse):
7
+ """Response for annotation reply settings."""
8
+
9
+ job_id: str | None = None
10
+ job_status: JobStatus | None = None