dify-oapi2 0.3.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 (481) 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/{workflow/v1/model/file → chat/v1/model}/file_info.py +6 -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/service.py +25 -0
  76. dify_oapi/api/chatflow/v1/model/annotation_info.py +43 -0
  77. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request.py +37 -0
  78. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request_body.py +33 -0
  79. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_response.py +10 -0
  80. dify_oapi/api/chatflow/v1/model/annotation_reply_status_request.py +36 -0
  81. dify_oapi/api/chatflow/v1/model/annotation_reply_status_response.py +11 -0
  82. dify_oapi/api/chatflow/v1/model/app_info.py +33 -0
  83. dify_oapi/api/chatflow/v1/model/app_parameters.py +276 -0
  84. dify_oapi/api/chatflow/v1/model/audio_to_text_request.py +37 -0
  85. dify_oapi/api/chatflow/v1/model/audio_to_text_response.py +21 -0
  86. dify_oapi/api/chatflow/v1/model/chat_file.py +40 -0
  87. dify_oapi/api/chatflow/v1/model/chat_message.py +88 -0
  88. dify_oapi/api/chatflow/v1/model/chatflow_types.py +210 -0
  89. dify_oapi/api/chatflow/v1/model/conversation_info.py +53 -0
  90. dify_oapi/api/chatflow/v1/model/conversation_variable.py +55 -0
  91. dify_oapi/api/chatflow/v1/model/create_annotation_request.py +30 -0
  92. dify_oapi/api/chatflow/v1/model/create_annotation_request_body.py +28 -0
  93. dify_oapi/api/chatflow/v1/model/create_annotation_response.py +9 -0
  94. dify_oapi/api/chatflow/v1/model/delete_annotation_request.py +28 -0
  95. dify_oapi/api/chatflow/v1/model/delete_annotation_response.py +7 -0
  96. dify_oapi/api/chatflow/v1/model/delete_conversation_request.py +36 -0
  97. dify_oapi/api/chatflow/v1/model/delete_conversation_request_body.py +21 -0
  98. dify_oapi/api/chatflow/v1/model/delete_conversation_response.py +17 -0
  99. dify_oapi/api/chatflow/v1/model/feedback_info.py +75 -0
  100. dify_oapi/api/chatflow/v1/model/file_info.py +53 -0
  101. dify_oapi/api/chatflow/v1/model/get_annotations_request.py +30 -0
  102. dify_oapi/api/chatflow/v1/model/get_annotations_response.py +13 -0
  103. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_request.py +30 -0
  104. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_response.py +23 -0
  105. dify_oapi/api/chatflow/v1/model/get_conversation_messages_request.py +38 -0
  106. dify_oapi/api/chatflow/v1/model/get_conversation_messages_response.py +33 -0
  107. dify_oapi/api/chatflow/v1/model/get_conversation_variables_request.py +44 -0
  108. dify_oapi/api/chatflow/v1/model/get_conversation_variables_response.py +33 -0
  109. dify_oapi/api/chatflow/v1/model/get_conversations_request.py +40 -0
  110. dify_oapi/api/chatflow/v1/model/get_conversations_response.py +33 -0
  111. dify_oapi/api/chatflow/v1/model/get_info_request.py +22 -0
  112. dify_oapi/api/chatflow/v1/model/get_info_response.py +7 -0
  113. dify_oapi/api/chatflow/v1/model/get_meta_request.py +22 -0
  114. dify_oapi/api/chatflow/v1/model/get_meta_response.py +7 -0
  115. dify_oapi/api/chatflow/v1/model/get_parameters_request.py +22 -0
  116. dify_oapi/api/chatflow/v1/model/get_parameters_response.py +7 -0
  117. dify_oapi/api/chatflow/v1/model/get_site_request.py +22 -0
  118. dify_oapi/api/chatflow/v1/model/get_site_response.py +7 -0
  119. dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
  120. dify_oapi/api/{knowledge_base/v1/model/metadata/toggle_builtin_response.py → chatflow/v1/model/get_suggested_questions_response.py} +2 -3
  121. dify_oapi/api/chatflow/v1/model/message_feedback_request.py +36 -0
  122. dify_oapi/api/chatflow/v1/model/message_feedback_request_body.py +33 -0
  123. dify_oapi/api/chatflow/v1/model/message_feedback_response.py +21 -0
  124. dify_oapi/api/chatflow/v1/model/rename_conversation_request.py +36 -0
  125. dify_oapi/api/chatflow/v1/model/rename_conversation_request_body.py +31 -0
  126. dify_oapi/api/chatflow/v1/model/rename_conversation_response.py +53 -0
  127. dify_oapi/api/chatflow/v1/model/retriever_resource.py +58 -0
  128. dify_oapi/api/chatflow/v1/model/send_chat_message_request.py +30 -0
  129. dify_oapi/api/chatflow/v1/model/send_chat_message_request_body.py +54 -0
  130. dify_oapi/api/chatflow/v1/model/send_chat_message_response.py +7 -0
  131. dify_oapi/api/chatflow/v1/model/stop_chat_message_request.py +36 -0
  132. dify_oapi/api/chatflow/v1/model/stop_chat_message_request_body.py +21 -0
  133. dify_oapi/api/{knowledge_base/v1/model/tag/bind_response.py → chatflow/v1/model/stop_chat_message_response.py} +1 -3
  134. dify_oapi/api/chatflow/v1/model/text_to_audio_request.py +30 -0
  135. dify_oapi/api/chatflow/v1/model/text_to_audio_request_body.py +36 -0
  136. dify_oapi/api/chatflow/v1/model/text_to_audio_response.py +19 -0
  137. dify_oapi/api/chatflow/v1/model/tool_icon.py +48 -0
  138. dify_oapi/api/chatflow/v1/model/update_annotation_request.py +36 -0
  139. dify_oapi/api/chatflow/v1/model/update_annotation_request_body.py +28 -0
  140. dify_oapi/api/chatflow/v1/model/update_annotation_response.py +9 -0
  141. dify_oapi/api/chatflow/v1/model/upload_file_request.py +41 -0
  142. dify_oapi/api/{workflow/v1/model/file → chatflow/v1/model}/upload_file_response.py +2 -0
  143. dify_oapi/api/chatflow/v1/model/usage_info.py +78 -0
  144. dify_oapi/api/chatflow/v1/model/user_input_form.py +141 -0
  145. dify_oapi/api/chatflow/v1/model/webapp_settings.py +88 -0
  146. dify_oapi/api/chatflow/v1/resource/annotation.py +122 -0
  147. dify_oapi/api/chatflow/v1/resource/application.py +76 -0
  148. dify_oapi/api/chatflow/v1/resource/chatflow.py +91 -0
  149. dify_oapi/api/chatflow/v1/resource/conversation.py +104 -0
  150. dify_oapi/api/chatflow/v1/resource/feedback.py +69 -0
  151. dify_oapi/api/chatflow/v1/resource/file.py +39 -0
  152. dify_oapi/api/chatflow/v1/resource/tts.py +29 -0
  153. dify_oapi/api/chatflow/v1/version.py +29 -0
  154. dify_oapi/api/completion/v1/model/completion/completion_inputs.py +28 -4
  155. dify_oapi/api/completion/v1/model/completion/completion_types.py +19 -1
  156. dify_oapi/api/completion/v1/model/completion/input_file_object.py +58 -0
  157. dify_oapi/api/completion/v1/model/completion/send_message_request_body.py +40 -44
  158. dify_oapi/api/completion/v1/model/completion/usage.py +4 -2
  159. dify_oapi/api/completion/v1/model/info/feature_config.py +91 -0
  160. dify_oapi/api/completion/v1/model/info/parameters_info.py +16 -8
  161. dify_oapi/api/completion/v1/model/info/site_info.py +3 -3
  162. dify_oapi/api/completion/v1/model/info/user_input_form.py +131 -16
  163. dify_oapi/api/knowledge/service.py +8 -0
  164. dify_oapi/api/knowledge/v1/__init__.py +0 -0
  165. dify_oapi/api/knowledge/v1/model/__init__.py +0 -0
  166. dify_oapi/api/knowledge/v1/model/batch_info.py +86 -0
  167. dify_oapi/api/knowledge/v1/model/bind_tags_to_dataset_request.py +30 -0
  168. dify_oapi/api/knowledge/v1/model/bind_tags_to_dataset_request_body.py +26 -0
  169. dify_oapi/api/{knowledge_base/v1/model/tag/delete_response.py → knowledge/v1/model/bind_tags_to_dataset_response.py} +1 -3
  170. dify_oapi/api/knowledge/v1/model/child_chunk_content.py +34 -0
  171. dify_oapi/api/knowledge/v1/model/child_chunk_info.py +101 -0
  172. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/create_child_chunk_request.py +8 -2
  173. dify_oapi/api/knowledge/v1/model/create_child_chunk_request_body.py +44 -0
  174. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/create_child_chunk_response.py +5 -1
  175. dify_oapi/api/knowledge/v1/model/create_dataset_request.py +30 -0
  176. dify_oapi/api/knowledge/v1/model/create_dataset_request_body.py +67 -0
  177. dify_oapi/api/knowledge/v1/model/create_dataset_response.py +7 -0
  178. dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +55 -0
  179. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +73 -0
  180. dify_oapi/api/{knowledge_base/v1/model/document/create_by_file_response.py → knowledge/v1/model/create_document_by_file_response.py} +1 -1
  181. dify_oapi/api/knowledge/v1/model/create_document_by_text_request.py +44 -0
  182. dify_oapi/api/knowledge/v1/model/create_document_by_text_request_body.py +73 -0
  183. dify_oapi/api/{knowledge_base/v1/model/document/create_by_text_response.py → knowledge/v1/model/create_document_by_text_response.py} +3 -3
  184. dify_oapi/api/knowledge/v1/model/create_segment_request.py +50 -0
  185. dify_oapi/api/knowledge/v1/model/create_segment_request_body.py +31 -0
  186. dify_oapi/api/{knowledge_base/v1/model/segment/create_response.py → knowledge/v1/model/create_segment_response.py} +5 -2
  187. dify_oapi/api/knowledge/v1/model/create_tag_request.py +30 -0
  188. dify_oapi/api/knowledge/v1/model/create_tag_request_body.py +28 -0
  189. dify_oapi/api/knowledge/v1/model/create_tag_response.py +7 -0
  190. dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
  191. dify_oapi/api/knowledge/v1/model/data_source_info.py +34 -0
  192. dify_oapi/api/knowledge/v1/model/dataset_info.py +123 -0
  193. dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
  194. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/delete_child_chunk_request.py +8 -2
  195. dify_oapi/api/knowledge/v1/model/delete_child_chunk_response.py +9 -0
  196. dify_oapi/api/knowledge/v1/model/delete_dataset_request.py +28 -0
  197. dify_oapi/api/{knowledge_base/v1/model/tag/unbind_response.py → knowledge/v1/model/delete_dataset_response.py} +1 -3
  198. dify_oapi/api/knowledge/v1/model/delete_document_request.py +42 -0
  199. dify_oapi/api/knowledge/v1/model/delete_document_response.py +9 -0
  200. dify_oapi/api/knowledge/v1/model/delete_segment_request.py +48 -0
  201. dify_oapi/api/knowledge/v1/model/delete_segment_response.py +9 -0
  202. dify_oapi/api/knowledge/v1/model/delete_tag_request.py +30 -0
  203. dify_oapi/api/knowledge/v1/model/delete_tag_request_body.py +21 -0
  204. dify_oapi/api/knowledge/v1/model/delete_tag_response.py +5 -0
  205. dify_oapi/api/knowledge/v1/model/document_info.py +144 -0
  206. dify_oapi/api/knowledge/v1/model/document_metadata.py +39 -0
  207. dify_oapi/api/knowledge/v1/model/embedding_model_parameters.py +47 -0
  208. dify_oapi/api/{knowledge_base/v1/model/dataset → knowledge/v1/model}/external_knowledge_info.py +18 -12
  209. dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
  210. dify_oapi/api/knowledge/v1/model/file_info.py +71 -0
  211. dify_oapi/api/knowledge/v1/model/get_batch_indexing_status_request.py +42 -0
  212. dify_oapi/api/knowledge/v1/model/get_batch_indexing_status_response.py +22 -0
  213. dify_oapi/api/knowledge/v1/model/get_dataset_request.py +28 -0
  214. dify_oapi/api/knowledge/v1/model/get_dataset_response.py +7 -0
  215. dify_oapi/api/knowledge/v1/model/get_dataset_tags_request.py +28 -0
  216. dify_oapi/api/knowledge/v1/model/get_dataset_tags_response.py +8 -0
  217. dify_oapi/api/knowledge/v1/model/get_document_request.py +42 -0
  218. dify_oapi/api/knowledge/v1/model/get_document_response.py +11 -0
  219. dify_oapi/api/knowledge/v1/model/get_segment_request.py +48 -0
  220. dify_oapi/api/{knowledge_base/v1/model/segment/get_response.py → knowledge/v1/model/get_segment_response.py} +5 -1
  221. dify_oapi/api/knowledge/v1/model/get_text_embedding_models_request.py +22 -0
  222. dify_oapi/api/knowledge/v1/model/get_text_embedding_models_response.py +7 -0
  223. dify_oapi/api/knowledge/v1/model/get_upload_file_info_request.py +42 -0
  224. dify_oapi/api/knowledge/v1/model/get_upload_file_info_response.py +11 -0
  225. dify_oapi/api/knowledge/v1/model/knowledge_types.py +100 -0
  226. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/list_child_chunks_request.py +10 -4
  227. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/list_child_chunks_response.py +4 -0
  228. dify_oapi/api/knowledge/v1/model/list_datasets_request.py +30 -0
  229. dify_oapi/api/{knowledge_base/v1/model/dataset/list_response.py → knowledge/v1/model/list_datasets_response.py} +1 -3
  230. dify_oapi/api/knowledge/v1/model/list_documents_request.py +48 -0
  231. dify_oapi/api/{knowledge_base/v1/model/document/list_response.py → knowledge/v1/model/list_documents_response.py} +3 -3
  232. dify_oapi/api/knowledge/v1/model/list_segments_request.py +60 -0
  233. dify_oapi/api/{knowledge_base/v1/model/segment/list_response.py → knowledge/v1/model/list_segments_response.py} +5 -2
  234. dify_oapi/api/knowledge/v1/model/list_tags_request.py +28 -0
  235. dify_oapi/api/knowledge/v1/model/list_tags_response.py +7 -0
  236. dify_oapi/api/knowledge/v1/model/model_credentials.py +34 -0
  237. dify_oapi/api/knowledge/v1/model/model_info.py +85 -0
  238. dify_oapi/api/knowledge/v1/model/model_parameters.py +34 -0
  239. dify_oapi/api/knowledge/v1/model/pagination_info.py +44 -0
  240. dify_oapi/api/knowledge/v1/model/preprocessing_rule.py +36 -0
  241. dify_oapi/api/knowledge/v1/model/process_rule.py +43 -0
  242. dify_oapi/api/knowledge/v1/model/process_rules.py +49 -0
  243. dify_oapi/api/knowledge/v1/model/query_info.py +29 -0
  244. dify_oapi/api/knowledge/v1/model/reranking_mode.py +36 -0
  245. dify_oapi/api/knowledge/v1/model/reranking_model.py +47 -0
  246. dify_oapi/api/knowledge/v1/model/retrieval_model.py +68 -0
  247. dify_oapi/api/knowledge/v1/model/retrieval_record.py +28 -0
  248. dify_oapi/api/knowledge/v1/model/retrieval_segment_info.py +41 -0
  249. dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_request.py +36 -0
  250. dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_request_body.py +38 -0
  251. dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_response.py +9 -0
  252. dify_oapi/api/knowledge/v1/model/segment_content.py +39 -0
  253. dify_oapi/api/knowledge/v1/model/segment_document_info.py +41 -0
  254. dify_oapi/api/knowledge/v1/model/segment_info.py +131 -0
  255. dify_oapi/api/knowledge/v1/model/segmentation_rule.py +44 -0
  256. dify_oapi/api/knowledge/v1/model/subchunk_segmentation_rule.py +39 -0
  257. dify_oapi/api/knowledge/v1/model/tag_info.py +56 -0
  258. dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_request.py +30 -0
  259. dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_request_body.py +26 -0
  260. dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_response.py +5 -0
  261. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_request.py +8 -2
  262. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_request_body.py +12 -1
  263. dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_response.py +4 -0
  264. dify_oapi/api/knowledge/v1/model/update_dataset_request.py +36 -0
  265. dify_oapi/api/knowledge/v1/model/update_dataset_request_body.py +62 -0
  266. dify_oapi/api/knowledge/v1/model/update_dataset_response.py +7 -0
  267. dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +61 -0
  268. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +68 -0
  269. dify_oapi/api/{knowledge_base/v1/model/document/update_by_file_response.py → knowledge/v1/model/update_document_by_file_response.py} +3 -3
  270. dify_oapi/api/knowledge/v1/model/update_document_by_text_request.py +50 -0
  271. dify_oapi/api/knowledge/v1/model/update_document_by_text_request_body.py +73 -0
  272. dify_oapi/api/{knowledge_base/v1/model/document/update_by_text_response.py → knowledge/v1/model/update_document_by_text_response.py} +2 -4
  273. dify_oapi/api/knowledge/v1/model/update_document_status_request.py +51 -0
  274. dify_oapi/api/knowledge/v1/model/update_document_status_request_body.py +29 -0
  275. dify_oapi/api/knowledge/v1/model/update_document_status_response.py +9 -0
  276. dify_oapi/api/knowledge/v1/model/update_segment_request.py +56 -0
  277. dify_oapi/api/knowledge/v1/model/update_segment_request_body.py +31 -0
  278. dify_oapi/api/{knowledge_base/v1/model/segment/update_response.py → knowledge/v1/model/update_segment_response.py} +5 -1
  279. dify_oapi/api/knowledge/v1/model/update_tag_request.py +30 -0
  280. dify_oapi/api/knowledge/v1/model/update_tag_request_body.py +26 -0
  281. dify_oapi/api/knowledge/v1/model/update_tag_response.py +7 -0
  282. dify_oapi/api/knowledge/v1/model/weights.py +27 -0
  283. dify_oapi/api/knowledge/v1/resource/__init__.py +8 -0
  284. dify_oapi/api/knowledge/v1/resource/chunk.py +55 -0
  285. dify_oapi/api/knowledge/v1/resource/dataset.py +69 -0
  286. dify_oapi/api/knowledge/v1/resource/document.py +135 -0
  287. dify_oapi/api/knowledge/v1/resource/model.py +25 -0
  288. dify_oapi/api/knowledge/v1/resource/segment.py +55 -0
  289. dify_oapi/api/knowledge/v1/resource/tag.py +81 -0
  290. dify_oapi/api/knowledge/v1/version.py +18 -0
  291. dify_oapi/api/workflow/v1/model/{info/app_info.py → app_info.py} +1 -1
  292. dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
  293. dify_oapi/api/workflow/v1/model/file_upload_info.py +53 -0
  294. dify_oapi/api/workflow/v1/model/{log/get_workflow_logs_response.py → get_workflow_logs_response.py} +2 -2
  295. dify_oapi/api/workflow/v1/model/{workflow/get_workflow_run_detail_response.py → get_workflow_run_detail_response.py} +18 -0
  296. dify_oapi/api/workflow/v1/model/input_file_object_workflow.py +76 -0
  297. dify_oapi/api/workflow/v1/model/node_finished_data.py +118 -0
  298. dify_oapi/api/workflow/v1/model/node_started_data.py +81 -0
  299. dify_oapi/api/workflow/v1/model/ping_data.py +28 -0
  300. dify_oapi/api/workflow/v1/model/{workflow/run_workflow_request_body.py → run_workflow_request_body.py} +1 -1
  301. dify_oapi/api/workflow/v1/model/{info/site_info.py → site_info.py} +1 -1
  302. dify_oapi/api/workflow/v1/model/text_chunk_data.py +39 -0
  303. dify_oapi/api/workflow/v1/model/tts_message_data.py +45 -0
  304. dify_oapi/api/workflow/v1/model/tts_message_end_data.py +45 -0
  305. dify_oapi/api/{knowledge_base/v1/model/dataset/delete_response.py → workflow/v1/model/upload_file_response.py} +2 -2
  306. dify_oapi/api/workflow/v1/model/workflow_completion_response.py +50 -0
  307. dify_oapi/api/workflow/v1/model/workflow_finished_data.py +93 -0
  308. dify_oapi/api/workflow/v1/model/workflow_log_info.py +57 -0
  309. dify_oapi/api/workflow/v1/model/{log/workflow_run_log_info.py → workflow_run_log_info.py} +1 -1
  310. dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
  311. dify_oapi/api/workflow/v1/model/workflow_types.py +69 -0
  312. dify_oapi/api/workflow/v1/resource/workflow.py +56 -144
  313. dify_oapi/api/workflow/v1/version.py +1 -7
  314. dify_oapi/client.py +51 -6
  315. dify_oapi/core/http/transport/__init__.py +2 -1
  316. dify_oapi/core/http/transport/async_transport.py +73 -50
  317. dify_oapi/core/http/transport/connection_pool.py +131 -0
  318. dify_oapi/core/http/transport/sync_transport.py +73 -50
  319. dify_oapi/core/model/config.py +10 -0
  320. {dify_oapi2-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/METADATA +57 -21
  321. dify_oapi2-0.5.0.dist-info/RECORD +479 -0
  322. dify_oapi/api/chat/v1/model/chat_request_file.py +0 -46
  323. dify_oapi/api/chat/v1/model/message_suggested_request.py +0 -36
  324. dify_oapi/api/knowledge_base/service.py +0 -8
  325. dify_oapi/api/knowledge_base/v1/model/dataset/__init__.py +0 -49
  326. dify_oapi/api/knowledge_base/v1/model/dataset/create_request.py +0 -32
  327. dify_oapi/api/knowledge_base/v1/model/dataset/create_request_body.py +0 -72
  328. dify_oapi/api/knowledge_base/v1/model/dataset/create_response.py +0 -11
  329. dify_oapi/api/knowledge_base/v1/model/dataset/dataset_info.py +0 -150
  330. dify_oapi/api/knowledge_base/v1/model/dataset/dataset_types.py +0 -36
  331. dify_oapi/api/knowledge_base/v1/model/dataset/delete_request.py +0 -30
  332. dify_oapi/api/knowledge_base/v1/model/dataset/filter_condition.py +0 -72
  333. dify_oapi/api/knowledge_base/v1/model/dataset/get_request.py +0 -30
  334. dify_oapi/api/knowledge_base/v1/model/dataset/get_response.py +0 -11
  335. dify_oapi/api/knowledge_base/v1/model/dataset/list_request.py +0 -45
  336. dify_oapi/api/knowledge_base/v1/model/dataset/metadata_filtering_conditions.py +0 -30
  337. dify_oapi/api/knowledge_base/v1/model/dataset/reranking_model.py +0 -28
  338. dify_oapi/api/knowledge_base/v1/model/dataset/retrieval_model.py +0 -144
  339. dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_request.py +0 -38
  340. dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_request_body.py +0 -38
  341. dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_response.py +0 -53
  342. dify_oapi/api/knowledge_base/v1/model/dataset/update_request.py +0 -38
  343. dify_oapi/api/knowledge_base/v1/model/dataset/update_request_body.py +0 -58
  344. dify_oapi/api/knowledge_base/v1/model/dataset/update_response.py +0 -11
  345. dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request.py +0 -53
  346. dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request_body.py +0 -31
  347. dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request_body_data.py +0 -78
  348. dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request.py +0 -38
  349. dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request_body.py +0 -75
  350. dify_oapi/api/knowledge_base/v1/model/document/data_source_info.py +0 -30
  351. dify_oapi/api/knowledge_base/v1/model/document/delete_request.py +0 -38
  352. dify_oapi/api/knowledge_base/v1/model/document/delete_response.py +0 -9
  353. dify_oapi/api/knowledge_base/v1/model/document/document_info.py +0 -164
  354. dify_oapi/api/knowledge_base/v1/model/document/document_types.py +0 -36
  355. dify_oapi/api/knowledge_base/v1/model/document/get_request.py +0 -40
  356. dify_oapi/api/knowledge_base/v1/model/document/get_response.py +0 -9
  357. dify_oapi/api/knowledge_base/v1/model/document/get_upload_file_request.py +0 -38
  358. dify_oapi/api/knowledge_base/v1/model/document/get_upload_file_response.py +0 -11
  359. dify_oapi/api/knowledge_base/v1/model/document/indexing_status_info.py +0 -80
  360. dify_oapi/api/knowledge_base/v1/model/document/indexing_status_request.py +0 -36
  361. dify_oapi/api/knowledge_base/v1/model/document/indexing_status_response.py +0 -11
  362. dify_oapi/api/knowledge_base/v1/model/document/list_request.py +0 -42
  363. dify_oapi/api/knowledge_base/v1/model/document/pre_processing_rule.py +0 -32
  364. dify_oapi/api/knowledge_base/v1/model/document/process_rule.py +0 -34
  365. dify_oapi/api/knowledge_base/v1/model/document/retrieval_model.py +0 -54
  366. dify_oapi/api/knowledge_base/v1/model/document/rules.py +0 -31
  367. dify_oapi/api/knowledge_base/v1/model/document/segmentation.py +0 -35
  368. dify_oapi/api/knowledge_base/v1/model/document/subchunk_segmentation.py +0 -35
  369. dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request.py +0 -53
  370. dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request_body.py +0 -26
  371. dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request_body_data.py +0 -40
  372. dify_oapi/api/knowledge_base/v1/model/document/update_by_text_request.py +0 -55
  373. dify_oapi/api/knowledge_base/v1/model/document/update_by_text_request_body.py +0 -46
  374. dify_oapi/api/knowledge_base/v1/model/document/update_status_request.py +0 -55
  375. dify_oapi/api/knowledge_base/v1/model/document/update_status_request_body.py +0 -32
  376. dify_oapi/api/knowledge_base/v1/model/document/update_status_response.py +0 -9
  377. dify_oapi/api/knowledge_base/v1/model/document/upload_file_info.py +0 -65
  378. dify_oapi/api/knowledge_base/v1/model/metadata/__init__.py +0 -35
  379. dify_oapi/api/knowledge_base/v1/model/metadata/create_request.py +0 -38
  380. dify_oapi/api/knowledge_base/v1/model/metadata/create_request_body.py +0 -31
  381. dify_oapi/api/knowledge_base/v1/model/metadata/create_response.py +0 -13
  382. dify_oapi/api/knowledge_base/v1/model/metadata/delete_request.py +0 -36
  383. dify_oapi/api/knowledge_base/v1/model/metadata/delete_response.py +0 -7
  384. dify_oapi/api/knowledge_base/v1/model/metadata/list_request.py +0 -30
  385. dify_oapi/api/knowledge_base/v1/model/metadata/list_response.py +0 -9
  386. dify_oapi/api/knowledge_base/v1/model/metadata/metadata_info.py +0 -38
  387. dify_oapi/api/knowledge_base/v1/model/metadata/metadata_types.py +0 -15
  388. dify_oapi/api/knowledge_base/v1/model/metadata/toggle_builtin_request.py +0 -36
  389. dify_oapi/api/knowledge_base/v1/model/metadata/update_document_request.py +0 -38
  390. dify_oapi/api/knowledge_base/v1/model/metadata/update_document_request_body.py +0 -79
  391. dify_oapi/api/knowledge_base/v1/model/metadata/update_document_response.py +0 -7
  392. dify_oapi/api/knowledge_base/v1/model/metadata/update_request.py +0 -44
  393. dify_oapi/api/knowledge_base/v1/model/metadata/update_request_body.py +0 -24
  394. dify_oapi/api/knowledge_base/v1/model/metadata/update_response.py +0 -13
  395. dify_oapi/api/knowledge_base/v1/model/segment/__init__.py +0 -77
  396. dify_oapi/api/knowledge_base/v1/model/segment/child_chunk_info.py +0 -88
  397. dify_oapi/api/knowledge_base/v1/model/segment/create_child_chunk_request_body.py +0 -23
  398. dify_oapi/api/knowledge_base/v1/model/segment/create_request.py +0 -42
  399. dify_oapi/api/knowledge_base/v1/model/segment/create_request_body.py +0 -25
  400. dify_oapi/api/knowledge_base/v1/model/segment/delete_child_chunk_response.py +0 -5
  401. dify_oapi/api/knowledge_base/v1/model/segment/delete_request.py +0 -40
  402. dify_oapi/api/knowledge_base/v1/model/segment/delete_response.py +0 -5
  403. dify_oapi/api/knowledge_base/v1/model/segment/get_request.py +0 -40
  404. dify_oapi/api/knowledge_base/v1/model/segment/list_request.py +0 -50
  405. dify_oapi/api/knowledge_base/v1/model/segment/segment_data.py +0 -43
  406. dify_oapi/api/knowledge_base/v1/model/segment/segment_info.py +0 -123
  407. dify_oapi/api/knowledge_base/v1/model/segment/segment_types.py +0 -24
  408. dify_oapi/api/knowledge_base/v1/model/segment/update_request.py +0 -48
  409. dify_oapi/api/knowledge_base/v1/model/segment/update_request_body.py +0 -25
  410. dify_oapi/api/knowledge_base/v1/model/tag/__init__.py +0 -41
  411. dify_oapi/api/knowledge_base/v1/model/tag/bind_request.py +0 -32
  412. dify_oapi/api/knowledge_base/v1/model/tag/bind_request_body.py +0 -29
  413. dify_oapi/api/knowledge_base/v1/model/tag/create_request.py +0 -32
  414. dify_oapi/api/knowledge_base/v1/model/tag/create_request_body.py +0 -24
  415. dify_oapi/api/knowledge_base/v1/model/tag/create_response.py +0 -16
  416. dify_oapi/api/knowledge_base/v1/model/tag/delete_request.py +0 -32
  417. dify_oapi/api/knowledge_base/v1/model/tag/delete_request_body.py +0 -24
  418. dify_oapi/api/knowledge_base/v1/model/tag/list_request.py +0 -24
  419. dify_oapi/api/knowledge_base/v1/model/tag/list_response.py +0 -19
  420. dify_oapi/api/knowledge_base/v1/model/tag/query_bound_request.py +0 -30
  421. dify_oapi/api/knowledge_base/v1/model/tag/query_bound_response.py +0 -9
  422. dify_oapi/api/knowledge_base/v1/model/tag/tag_info.py +0 -38
  423. dify_oapi/api/knowledge_base/v1/model/tag/tag_types.py +0 -12
  424. dify_oapi/api/knowledge_base/v1/model/tag/unbind_request.py +0 -32
  425. dify_oapi/api/knowledge_base/v1/model/tag/unbind_request_body.py +0 -29
  426. dify_oapi/api/knowledge_base/v1/model/tag/update_request.py +0 -32
  427. dify_oapi/api/knowledge_base/v1/model/tag/update_request_body.py +0 -29
  428. dify_oapi/api/knowledge_base/v1/model/tag/update_response.py +0 -23
  429. dify_oapi/api/knowledge_base/v1/resource/__init__.py +0 -7
  430. dify_oapi/api/knowledge_base/v1/resource/dataset.py +0 -58
  431. dify_oapi/api/knowledge_base/v1/resource/document.py +0 -107
  432. dify_oapi/api/knowledge_base/v1/resource/metadata.py +0 -65
  433. dify_oapi/api/knowledge_base/v1/resource/segment.py +0 -110
  434. dify_oapi/api/knowledge_base/v1/resource/tag.py +0 -65
  435. dify_oapi/api/knowledge_base/v1/version.py +0 -12
  436. dify_oapi/api/workflow/v1/model/file/__init__.py +0 -1
  437. dify_oapi/api/workflow/v1/model/file/preview_file_request.py +0 -34
  438. dify_oapi/api/workflow/v1/model/file/preview_file_response.py +0 -9
  439. dify_oapi/api/workflow/v1/model/log/log_info.py +0 -57
  440. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +0 -38
  441. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +0 -47
  442. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +0 -9
  443. dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +0 -42
  444. dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +0 -54
  445. dify_oapi/api/workflow/v1/resource/file.py +0 -63
  446. dify_oapi/api/workflow/v1/resource/info.py +0 -93
  447. dify_oapi/api/workflow/v1/resource/log.py +0 -43
  448. dify_oapi2-0.3.0.dist-info/RECORD +0 -348
  449. /dify_oapi/api/{knowledge_base → chatflow}/__init__.py +0 -0
  450. /dify_oapi/api/{knowledge_base → chatflow}/v1/__init__.py +0 -0
  451. /dify_oapi/api/{knowledge_base → chatflow}/v1/model/__init__.py +0 -0
  452. /dify_oapi/api/{knowledge_base/v1/model/document → chatflow/v1/resource}/__init__.py +0 -0
  453. /dify_oapi/api/{workflow/v1/model/log → knowledge}/__init__.py +0 -0
  454. /dify_oapi/api/workflow/v1/model/{log/end_user_info.py → end_user_info.py} +0 -0
  455. /dify_oapi/api/workflow/v1/model/{workflow/execution_metadata.py → execution_metadata.py} +0 -0
  456. /dify_oapi/api/workflow/v1/model/{info/file_upload_config.py → file_upload_config.py} +0 -0
  457. /dify_oapi/api/workflow/v1/model/{info/get_info_request.py → get_info_request.py} +0 -0
  458. /dify_oapi/api/workflow/v1/model/{info/get_info_response.py → get_info_response.py} +0 -0
  459. /dify_oapi/api/workflow/v1/model/{info/get_parameters_request.py → get_parameters_request.py} +0 -0
  460. /dify_oapi/api/workflow/v1/model/{info/get_parameters_response.py → get_parameters_response.py} +0 -0
  461. /dify_oapi/api/workflow/v1/model/{info/get_site_request.py → get_site_request.py} +0 -0
  462. /dify_oapi/api/workflow/v1/model/{info/get_site_response.py → get_site_response.py} +0 -0
  463. /dify_oapi/api/workflow/v1/model/{log/get_workflow_logs_request.py → get_workflow_logs_request.py} +0 -0
  464. /dify_oapi/api/workflow/v1/model/{workflow/get_workflow_run_detail_request.py → get_workflow_run_detail_request.py} +0 -0
  465. /dify_oapi/api/workflow/v1/model/{workflow/node_info.py → node_info.py} +0 -0
  466. /dify_oapi/api/workflow/v1/model/{info/parameters_info.py → parameters_info.py} +0 -0
  467. /dify_oapi/api/workflow/v1/model/{workflow/run_workflow_request.py → run_workflow_request.py} +0 -0
  468. /dify_oapi/api/workflow/v1/model/{workflow/run_workflow_response.py → run_workflow_response.py} +0 -0
  469. /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_request.py → stop_workflow_request.py} +0 -0
  470. /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_request_body.py → stop_workflow_request_body.py} +0 -0
  471. /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_response.py → stop_workflow_response.py} +0 -0
  472. /dify_oapi/api/workflow/v1/model/{info/system_parameters.py → system_parameters.py} +0 -0
  473. /dify_oapi/api/workflow/v1/model/{file/upload_file_request.py → upload_file_request.py} +0 -0
  474. /dify_oapi/api/workflow/v1/model/{file/upload_file_request_body.py → upload_file_request_body.py} +0 -0
  475. /dify_oapi/api/workflow/v1/model/{info/user_input_form.py → user_input_form.py} +0 -0
  476. /dify_oapi/api/workflow/v1/model/{workflow/workflow_file_info.py → workflow_file_info.py} +0 -0
  477. /dify_oapi/api/workflow/v1/model/{workflow/workflow_inputs.py → workflow_inputs.py} +0 -0
  478. /dify_oapi/api/workflow/v1/model/{workflow/workflow_run_data.py → workflow_run_data.py} +0 -0
  479. /dify_oapi/api/workflow/v1/model/{workflow/workflow_run_info.py → workflow_run_info.py} +0 -0
  480. {dify_oapi2-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/LICENSE +0 -0
  481. {dify_oapi2-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,69 @@
1
+ """Workflow API type definitions.
2
+
3
+ This module contains all Literal type definitions for the Workflow API,
4
+ ensuring strict type safety throughout the workflow module.
5
+ """
6
+
7
+ from typing import Literal
8
+
9
+ # Response mode types for workflow execution
10
+ ResponseMode = Literal["streaming", "blocking"]
11
+
12
+ # File types supported in workflow inputs
13
+ FileType = Literal["document", "image", "audio", "video", "custom"]
14
+
15
+ # File transfer methods
16
+ TransferMethod = Literal["remote_url", "local_file"]
17
+
18
+ # Workflow execution status
19
+ WorkflowStatus = Literal["running", "succeeded", "failed", "stopped"]
20
+
21
+ # Node execution status
22
+ NodeStatus = Literal["running", "succeeded", "failed", "stopped"]
23
+
24
+ # Streaming event types
25
+ EventType = Literal[
26
+ "workflow_started",
27
+ "node_started",
28
+ "text_chunk",
29
+ "node_finished",
30
+ "workflow_finished",
31
+ "tts_message",
32
+ "tts_message_end",
33
+ "ping",
34
+ ]
35
+
36
+ # Workflow node types
37
+ NodeType = Literal[
38
+ "start",
39
+ "end",
40
+ "llm",
41
+ "code",
42
+ "template",
43
+ "knowledge_retrieval",
44
+ "question_classifier",
45
+ "if_else",
46
+ "variable_assigner",
47
+ "parameter_extractor",
48
+ ]
49
+
50
+ # WebApp icon types
51
+ IconType = Literal["emoji", "image"]
52
+
53
+ # Application mode types
54
+ AppMode = Literal["workflow"]
55
+
56
+ # Log status filter types (includes "running" for filtering)
57
+ LogStatus = Literal["succeeded", "failed", "stopped", "running"]
58
+
59
+ # Creator role types
60
+ CreatedByRole = Literal["end_user", "account"]
61
+
62
+ # Creation source types
63
+ CreatedFrom = Literal["service-api", "web-app"]
64
+
65
+ # User input form control types
66
+ UserInputFormType = Literal["text-input", "paragraph", "select"]
67
+
68
+ # UUID format validation pattern
69
+ UUID_PATTERN = r"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
@@ -5,14 +5,22 @@ from dify_oapi.core.http.transport import ATransport, Transport
5
5
  from dify_oapi.core.model.config import Config
6
6
  from dify_oapi.core.model.request_option import RequestOption
7
7
 
8
- from ..model.workflow.get_workflow_run_detail_request import GetWorkflowRunDetailRequest
9
- from ..model.workflow.get_workflow_run_detail_response import GetWorkflowRunDetailResponse
10
- from ..model.workflow.run_specific_workflow_request import RunSpecificWorkflowRequest
11
- from ..model.workflow.run_specific_workflow_response import RunSpecificWorkflowResponse
12
- from ..model.workflow.run_workflow_request import RunWorkflowRequest
13
- from ..model.workflow.run_workflow_response import RunWorkflowResponse
14
- from ..model.workflow.stop_workflow_request import StopWorkflowRequest
15
- from ..model.workflow.stop_workflow_response import StopWorkflowResponse
8
+ from ..model.get_info_request import GetInfoRequest
9
+ from ..model.get_info_response import GetInfoResponse
10
+ from ..model.get_parameters_request import GetParametersRequest
11
+ from ..model.get_parameters_response import GetParametersResponse
12
+ from ..model.get_site_request import GetSiteRequest
13
+ from ..model.get_site_response import GetSiteResponse
14
+ from ..model.get_workflow_logs_request import GetWorkflowLogsRequest
15
+ from ..model.get_workflow_logs_response import GetWorkflowLogsResponse
16
+ from ..model.get_workflow_run_detail_request import GetWorkflowRunDetailRequest
17
+ from ..model.get_workflow_run_detail_response import GetWorkflowRunDetailResponse
18
+ from ..model.run_workflow_request import RunWorkflowRequest
19
+ from ..model.run_workflow_response import RunWorkflowResponse
20
+ from ..model.stop_workflow_request import StopWorkflowRequest
21
+ from ..model.stop_workflow_response import StopWorkflowResponse
22
+ from ..model.upload_file_request import UploadFileRequest
23
+ from ..model.upload_file_response import UploadFileResponse
16
24
 
17
25
 
18
26
  class Workflow:
@@ -20,7 +28,7 @@ class Workflow:
20
28
  self.config = config
21
29
 
22
30
  @overload
23
- def run_workflow(
31
+ def run(
24
32
  self,
25
33
  request: RunWorkflowRequest,
26
34
  request_option: RequestOption,
@@ -28,35 +36,25 @@ class Workflow:
28
36
  ) -> Generator[bytes, None, None]: ...
29
37
 
30
38
  @overload
31
- def run_workflow(
39
+ def run(
32
40
  self,
33
41
  request: RunWorkflowRequest,
34
42
  request_option: RequestOption,
35
43
  stream: Literal[False] = False,
36
44
  ) -> RunWorkflowResponse: ...
37
45
 
38
- def run_workflow(
46
+ def run(
39
47
  self,
40
48
  request: RunWorkflowRequest,
41
49
  request_option: RequestOption,
42
50
  stream: bool = False,
43
51
  ) -> RunWorkflowResponse | Generator[bytes, None, None]:
44
- """Execute workflow.
45
-
46
- Args:
47
- request: The run workflow request
48
- request_option: Request options including API key
49
- stream: Whether to use streaming mode
50
-
51
- Returns:
52
- RunWorkflowResponse for blocking mode or Generator[bytes, None, None] for streaming mode
53
- """
54
52
  if stream:
55
53
  return Transport.execute(self.config, request, stream=True, option=request_option)
56
54
  return Transport.execute(self.config, request, unmarshal_as=RunWorkflowResponse, option=request_option)
57
55
 
58
56
  @overload
59
- async def arun_workflow(
57
+ async def arun(
60
58
  self,
61
59
  request: RunWorkflowRequest,
62
60
  request_option: RequestOption,
@@ -64,157 +62,71 @@ class Workflow:
64
62
  ) -> AsyncGenerator[bytes, None]: ...
65
63
 
66
64
  @overload
67
- async def arun_workflow(
65
+ async def arun(
68
66
  self,
69
67
  request: RunWorkflowRequest,
70
68
  request_option: RequestOption,
71
69
  stream: Literal[False] = False,
72
70
  ) -> RunWorkflowResponse: ...
73
71
 
74
- async def arun_workflow(
72
+ async def arun(
75
73
  self,
76
74
  request: RunWorkflowRequest,
77
75
  request_option: RequestOption,
78
76
  stream: bool = False,
79
77
  ) -> RunWorkflowResponse | AsyncGenerator[bytes, None]:
80
- """Execute workflow asynchronously.
81
-
82
- Args:
83
- request: The run workflow request
84
- request_option: Request options including API key
85
- stream: Whether to use streaming mode
86
-
87
- Returns:
88
- RunWorkflowResponse for blocking mode or AsyncGenerator[bytes, None] for streaming mode
89
- """
90
78
  if stream:
91
79
  return await ATransport.aexecute(self.config, request, stream=True, option=request_option)
92
80
  return await ATransport.aexecute(self.config, request, unmarshal_as=RunWorkflowResponse, option=request_option)
93
81
 
94
- @overload
95
- def run_specific_workflow(
96
- self,
97
- request: RunSpecificWorkflowRequest,
98
- request_option: RequestOption,
99
- stream: Literal[True],
100
- ) -> Generator[bytes, None, None]: ...
101
-
102
- @overload
103
- def run_specific_workflow(
104
- self,
105
- request: RunSpecificWorkflowRequest,
106
- request_option: RequestOption,
107
- stream: Literal[False] = False,
108
- ) -> RunSpecificWorkflowResponse: ...
109
-
110
- def run_specific_workflow(
111
- self,
112
- request: RunSpecificWorkflowRequest,
113
- request_option: RequestOption,
114
- stream: bool = False,
115
- ) -> RunSpecificWorkflowResponse | Generator[bytes, None, None]:
116
- """Execute specific version workflow.
117
-
118
- Args:
119
- request: The run specific workflow request
120
- request_option: Request options including API key
121
- stream: Whether to use streaming mode
122
-
123
- Returns:
124
- RunSpecificWorkflowResponse for blocking mode or Generator[bytes, None, None] for streaming mode
125
- """
126
- if stream:
127
- return Transport.execute(self.config, request, stream=True, option=request_option)
128
- return Transport.execute(self.config, request, unmarshal_as=RunSpecificWorkflowResponse, option=request_option)
129
-
130
- @overload
131
- async def arun_specific_workflow(
132
- self,
133
- request: RunSpecificWorkflowRequest,
134
- request_option: RequestOption,
135
- stream: Literal[True],
136
- ) -> AsyncGenerator[bytes, None]: ...
137
-
138
- @overload
139
- async def arun_specific_workflow(
140
- self,
141
- request: RunSpecificWorkflowRequest,
142
- request_option: RequestOption,
143
- stream: Literal[False] = False,
144
- ) -> RunSpecificWorkflowResponse: ...
145
-
146
- async def arun_specific_workflow(
147
- self,
148
- request: RunSpecificWorkflowRequest,
149
- request_option: RequestOption,
150
- stream: bool = False,
151
- ) -> RunSpecificWorkflowResponse | AsyncGenerator[bytes, None]:
152
- """Execute specific version workflow asynchronously.
153
-
154
- Args:
155
- request: The run specific workflow request
156
- request_option: Request options including API key
157
- stream: Whether to use streaming mode
82
+ def detail(
83
+ self, request: GetWorkflowRunDetailRequest, request_option: RequestOption
84
+ ) -> GetWorkflowRunDetailResponse:
85
+ return Transport.execute(self.config, request, unmarshal_as=GetWorkflowRunDetailResponse, option=request_option)
158
86
 
159
- Returns:
160
- RunSpecificWorkflowResponse for blocking mode or AsyncGenerator[bytes, None] for streaming mode
161
- """
162
- if stream:
163
- return await ATransport.aexecute(self.config, request, stream=True, option=request_option)
87
+ async def adetail(
88
+ self, request: GetWorkflowRunDetailRequest, request_option: RequestOption
89
+ ) -> GetWorkflowRunDetailResponse:
164
90
  return await ATransport.aexecute(
165
- self.config, request, unmarshal_as=RunSpecificWorkflowResponse, option=request_option
91
+ self.config, request, unmarshal_as=GetWorkflowRunDetailResponse, option=request_option
166
92
  )
167
93
 
168
- def get_workflow_run_detail(
169
- self, request: GetWorkflowRunDetailRequest, request_option: RequestOption
170
- ) -> GetWorkflowRunDetailResponse:
171
- """Get workflow execution details.
94
+ def stop(self, request: StopWorkflowRequest, request_option: RequestOption) -> StopWorkflowResponse:
95
+ return Transport.execute(self.config, request, unmarshal_as=StopWorkflowResponse, option=request_option)
172
96
 
173
- Args:
174
- request: The get workflow run detail request
175
- request_option: Request options including API key
97
+ async def astop(self, request: StopWorkflowRequest, request_option: RequestOption) -> StopWorkflowResponse:
98
+ return await ATransport.aexecute(self.config, request, unmarshal_as=StopWorkflowResponse, option=request_option)
176
99
 
177
- Returns:
178
- GetWorkflowRunDetailResponse with workflow execution details
179
- """
180
- return Transport.execute(self.config, request, unmarshal_as=GetWorkflowRunDetailResponse, option=request_option)
100
+ def upload(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
101
+ return Transport.execute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
181
102
 
182
- async def aget_workflow_run_detail(
183
- self, request: GetWorkflowRunDetailRequest, request_option: RequestOption
184
- ) -> GetWorkflowRunDetailResponse:
185
- """Get workflow execution details asynchronously.
103
+ async def aupload(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
104
+ return await ATransport.aexecute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
186
105
 
187
- Args:
188
- request: The get workflow run detail request
189
- request_option: Request options including API key
106
+ def logs(self, request: GetWorkflowLogsRequest, request_option: RequestOption) -> GetWorkflowLogsResponse:
107
+ return Transport.execute(self.config, request, unmarshal_as=GetWorkflowLogsResponse, option=request_option)
190
108
 
191
- Returns:
192
- GetWorkflowRunDetailResponse with workflow execution details
193
- """
109
+ async def alogs(self, request: GetWorkflowLogsRequest, request_option: RequestOption) -> GetWorkflowLogsResponse:
194
110
  return await ATransport.aexecute(
195
- self.config, request, unmarshal_as=GetWorkflowRunDetailResponse, option=request_option
111
+ self.config, request, unmarshal_as=GetWorkflowLogsResponse, option=request_option
196
112
  )
197
113
 
198
- def stop_workflow(self, request: StopWorkflowRequest, request_option: RequestOption) -> StopWorkflowResponse:
199
- """Stop workflow execution.
114
+ def info(self, request: GetInfoRequest, request_option: RequestOption) -> GetInfoResponse:
115
+ return Transport.execute(self.config, request, unmarshal_as=GetInfoResponse, option=request_option)
200
116
 
201
- Args:
202
- request: The stop workflow request
203
- request_option: Request options including API key
117
+ async def ainfo(self, request: GetInfoRequest, request_option: RequestOption) -> GetInfoResponse:
118
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetInfoResponse, option=request_option)
204
119
 
205
- Returns:
206
- StopWorkflowResponse with stop result
207
- """
208
- return Transport.execute(self.config, request, unmarshal_as=StopWorkflowResponse, option=request_option)
120
+ def parameters(self, request: GetParametersRequest, request_option: RequestOption) -> GetParametersResponse:
121
+ return Transport.execute(self.config, request, unmarshal_as=GetParametersResponse, option=request_option)
209
122
 
210
- async def astop_workflow(self, request: StopWorkflowRequest, request_option: RequestOption) -> StopWorkflowResponse:
211
- """Stop workflow execution asynchronously.
123
+ async def aparameters(self, request: GetParametersRequest, request_option: RequestOption) -> GetParametersResponse:
124
+ return await ATransport.aexecute(
125
+ self.config, request, unmarshal_as=GetParametersResponse, option=request_option
126
+ )
212
127
 
213
- Args:
214
- request: The stop workflow request
215
- request_option: Request options including API key
128
+ def site(self, request: GetSiteRequest, request_option: RequestOption) -> GetSiteResponse:
129
+ return Transport.execute(self.config, request, unmarshal_as=GetSiteResponse, option=request_option)
216
130
 
217
- Returns:
218
- StopWorkflowResponse with stop result
219
- """
220
- return await ATransport.aexecute(self.config, request, unmarshal_as=StopWorkflowResponse, option=request_option)
131
+ async def asite(self, request: GetSiteRequest, request_option: RequestOption) -> GetSiteResponse:
132
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetSiteResponse, option=request_option)
@@ -1,14 +1,8 @@
1
1
  from dify_oapi.core.model.config import Config
2
2
 
3
- from .resource.file import File
4
- from .resource.info import Info
5
- from .resource.log import Log
6
3
  from .resource.workflow import Workflow
7
4
 
8
5
 
9
6
  class V1:
10
7
  def __init__(self, config: Config):
11
- self.workflow: Workflow = Workflow(config)
12
- self.file: File = File(config)
13
- self.log: Log = Log(config)
14
- self.info: Info = Info(config)
8
+ self.workflow = Workflow(config)
dify_oapi/client.py CHANGED
@@ -1,12 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import ssl
4
+
3
5
  from .api.chat.service import ChatService
6
+ from .api.chatflow.service import ChatflowService
4
7
  from .api.completion.service import CompletionService
5
8
  from .api.dify.service import DifyService
6
- from .api.knowledge_base.service import KnowledgeBaseService
9
+ from .api.knowledge.service import Knowledge
7
10
  from .api.workflow.service import WorkflowService
8
11
  from .core.enum import LogLevel
9
12
  from .core.http.transport import Transport
13
+ from .core.http.transport.connection_pool import connection_pool
10
14
  from .core.log import logger
11
15
  from .core.model.base_request import BaseRequest
12
16
  from .core.model.config import Config
@@ -16,10 +20,11 @@ class Client:
16
20
  def __init__(self):
17
21
  self._config: Config | None = None
18
22
  self._chat: ChatService | None = None
23
+ self._chatflow: ChatflowService | None = None
19
24
  self._completion: CompletionService | None = None
20
25
  self._dify: DifyService | None = None
21
26
  self._workflow: WorkflowService | None = None
22
- self._knowledge_base: KnowledgeBaseService | None = None
27
+ self._knowledge: Knowledge | None = None
23
28
 
24
29
  @property
25
30
  def chat(self) -> ChatService:
@@ -27,6 +32,12 @@ class Client:
27
32
  raise RuntimeError("Chat service has not been initialized")
28
33
  return self._chat
29
34
 
35
+ @property
36
+ def chatflow(self) -> ChatflowService:
37
+ if self._chatflow is None:
38
+ raise RuntimeError("Chatflow service has not been initialized")
39
+ return self._chatflow
40
+
30
41
  @property
31
42
  def completion(self) -> CompletionService:
32
43
  if self._completion is None:
@@ -46,10 +57,10 @@ class Client:
46
57
  return self._workflow
47
58
 
48
59
  @property
49
- def knowledge_base(self) -> KnowledgeBaseService:
50
- if self._knowledge_base is None:
60
+ def knowledge(self) -> Knowledge:
61
+ if self._knowledge is None:
51
62
  raise RuntimeError("Knowledge base service has not been initialized")
52
- return self._knowledge_base
63
+ return self._knowledge
53
64
 
54
65
  def request(self, request: BaseRequest):
55
66
  if self._config is None:
@@ -57,6 +68,14 @@ class Client:
57
68
  resp = Transport.execute(self._config, request)
58
69
  return resp
59
70
 
71
+ def close(self):
72
+ """Close all HTTP connections and clean up resources."""
73
+ connection_pool.close_all()
74
+
75
+ async def aclose(self):
76
+ """Async version of close for proper cleanup of async connections."""
77
+ await connection_pool.aclose_all()
78
+
60
79
  @staticmethod
61
80
  def builder() -> ClientBuilder:
62
81
  return ClientBuilder()
@@ -78,6 +97,31 @@ class ClientBuilder:
78
97
  self._config.max_retry_count = count
79
98
  return self
80
99
 
100
+ def max_keepalive_connections(self, count: int) -> ClientBuilder:
101
+ """Set maximum keepalive connections per connection pool."""
102
+ self._config.max_keepalive_connections = count
103
+ return self
104
+
105
+ def max_connections(self, count: int) -> ClientBuilder:
106
+ """Set maximum total connections per connection pool."""
107
+ self._config.max_connections = count
108
+ return self
109
+
110
+ def keepalive_expiry(self, seconds: float) -> ClientBuilder:
111
+ """Set keepalive connection expiry time in seconds."""
112
+ self._config.keepalive_expiry = seconds
113
+ return self
114
+
115
+ def timeout(self, seconds: float) -> ClientBuilder:
116
+ """Set client timeout in seconds."""
117
+ self._config.timeout = seconds
118
+ return self
119
+
120
+ def verify_ssl(self, verify: ssl.SSLContext | str | bool) -> ClientBuilder:
121
+ """Set SSL certificate verification."""
122
+ self._config.verify_ssl = verify
123
+ return self
124
+
81
125
  def build(self) -> Client:
82
126
  client: Client = Client()
83
127
  client._config = self._config
@@ -87,10 +131,11 @@ class ClientBuilder:
87
131
 
88
132
  # Initialize services
89
133
  client._chat = ChatService(self._config)
134
+ client._chatflow = ChatflowService(self._config)
90
135
  client._completion = CompletionService(self._config)
91
136
  client._dify = DifyService(self._config)
92
137
  client._workflow = WorkflowService(self._config)
93
- client._knowledge_base = KnowledgeBaseService(self._config)
138
+ client._knowledge = Knowledge(self._config)
94
139
  return client
95
140
 
96
141
  def _init_logger(self):
@@ -1,4 +1,5 @@
1
1
  from .async_transport import ATransport
2
+ from .connection_pool import ConnectionPoolManager, connection_pool
2
3
  from .sync_transport import Transport
3
4
 
4
- __all__ = ["Transport", "ATransport"]
5
+ __all__ = ["Transport", "ATransport", "ConnectionPoolManager", "connection_pool"]
@@ -16,6 +16,7 @@ from dify_oapi.core.model.request_option import RequestOption
16
16
  from dify_oapi.core.type import T
17
17
 
18
18
  from ._misc import _build_header, _build_url, _get_sleep_time, _merge_dicts, _unmarshaller
19
+ from .connection_pool import connection_pool
19
20
 
20
21
 
21
22
  def _format_log_details(
@@ -33,6 +34,12 @@ def _format_log_details(
33
34
  return ", ".join(details)
34
35
 
35
36
 
37
+ def _update_response_mode(body_data: dict | None, stream: bool) -> None:
38
+ """Update response_mode field in request body based on stream parameter"""
39
+ if body_data and "response_mode" in body_data:
40
+ body_data["response_mode"] = "streaming" if stream else "blocking"
41
+
42
+
36
43
  async def _handle_async_stream_error(response: httpx.Response) -> bytes:
37
44
  """Handle async streaming response errors"""
38
45
  try:
@@ -58,6 +65,16 @@ async def _async_stream_generator(
58
65
  method_name = http_method.name
59
66
  body_data = _merge_dicts(json_, files, data)
60
67
 
68
+ # Use connection pool for async streaming requests
69
+ client = connection_pool.get_async_client(
70
+ conf.domain or "",
71
+ conf.timeout,
72
+ getattr(conf, "max_keepalive_connections", 20),
73
+ getattr(conf, "max_connections", 100),
74
+ getattr(conf, "keepalive_expiry", 30.0),
75
+ getattr(conf, "verify_ssl", True),
76
+ )
77
+
61
78
  for retry in range(conf.max_retry_count + 1):
62
79
  if retry > 0:
63
80
  sleep_time = _get_sleep_time(retry)
@@ -65,19 +82,16 @@ async def _async_stream_generator(
65
82
  await asyncio.sleep(sleep_time)
66
83
 
67
84
  try:
68
- async with (
69
- httpx.AsyncClient() as client,
70
- client.stream(
71
- method_name,
72
- url,
73
- headers=headers,
74
- params=tuple(req.queries),
75
- json=json_,
76
- data=data,
77
- files=files,
78
- timeout=conf.timeout,
79
- ) as response,
80
- ):
85
+ async with client.stream(
86
+ method_name,
87
+ url,
88
+ headers=headers,
89
+ params=tuple(req.queries),
90
+ json=json_,
91
+ data=data,
92
+ files=files,
93
+ timeout=conf.timeout,
94
+ ) as response:
81
95
  logger.debug(
82
96
  f"{_format_log_details(method_name, url, headers, req.queries, body_data)}, stream response"
83
97
  )
@@ -162,8 +176,10 @@ class ATransport:
162
176
  files = req.files
163
177
  if req.body is not None:
164
178
  data = json.loads(JSON.marshal(req.body))
179
+ _update_response_mode(data, stream)
165
180
  elif req.body is not None:
166
181
  json_ = json.loads(JSON.marshal(req.body))
182
+ _update_response_mode(json_, stream)
167
183
 
168
184
  if stream:
169
185
  return _async_stream_generator(
@@ -173,45 +189,52 @@ class ATransport:
173
189
  method_name = req.http_method.name
174
190
  body_data = _merge_dicts(json_, files, data)
175
191
 
176
- async with httpx.AsyncClient() as client:
177
- for retry in range(conf.max_retry_count + 1):
178
- if retry > 0:
179
- sleep_time = _get_sleep_time(retry)
180
- logger.info(f"in-request: sleep {sleep_time}s")
181
- await asyncio.sleep(sleep_time)
192
+ # Use connection pool for async regular requests
193
+ client = connection_pool.get_async_client(
194
+ conf.domain or "",
195
+ conf.timeout,
196
+ getattr(conf, "max_keepalive_connections", 20),
197
+ getattr(conf, "max_connections", 100),
198
+ getattr(conf, "keepalive_expiry", 30.0),
199
+ getattr(conf, "verify_ssl", True),
200
+ )
201
+
202
+ for retry in range(conf.max_retry_count + 1):
203
+ if retry > 0:
204
+ sleep_time = _get_sleep_time(retry)
205
+ logger.info(f"in-request: sleep {sleep_time}s")
206
+ await asyncio.sleep(sleep_time)
207
+
208
+ try:
209
+ response = await client.request(
210
+ method_name,
211
+ url,
212
+ headers=headers,
213
+ params=tuple(req.queries),
214
+ json=json_,
215
+ data=data,
216
+ files=files,
217
+ timeout=conf.timeout,
218
+ )
219
+ break
220
+ except httpx.RequestError as e:
221
+ err_msg = f"{e.__class__.__name__}: {e!r}"
222
+ log_details = _format_log_details(method_name, url, headers, req.queries, body_data)
182
223
 
183
- try:
184
- response = await client.request(
185
- method_name,
186
- url,
187
- headers=headers,
188
- params=tuple(req.queries),
189
- json=json_,
190
- data=data,
191
- files=files,
192
- timeout=conf.timeout,
193
- )
194
- break
195
- except httpx.RequestError as e:
196
- err_msg = f"{e.__class__.__name__}: {e!r}"
197
- log_details = _format_log_details(method_name, url, headers, req.queries, body_data)
198
-
199
- if retry < conf.max_retry_count:
200
- logger.info(
201
- f"in-request: retrying ({retry + 1}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
202
- )
203
- continue
224
+ if retry < conf.max_retry_count:
204
225
  logger.info(
205
- f"in-request: request failed, retried ({retry}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
226
+ f"in-request: retrying ({retry + 1}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
206
227
  )
207
- raise
228
+ continue
229
+ logger.info(
230
+ f"in-request: request failed, retried ({retry}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
231
+ )
232
+ raise
208
233
 
209
- logger.debug(
210
- f"{_format_log_details(method_name, url, headers, req.queries, body_data)} {response.status_code}"
211
- )
234
+ logger.debug(f"{_format_log_details(method_name, url, headers, req.queries, body_data)} {response.status_code}")
212
235
 
213
- raw_resp = RawResponse()
214
- raw_resp.status_code = response.status_code
215
- raw_resp.headers = dict(response.headers)
216
- raw_resp.content = response.content
217
- return _unmarshaller(raw_resp, unmarshal_as)
236
+ raw_resp = RawResponse()
237
+ raw_resp.status_code = response.status_code
238
+ raw_resp.headers = dict(response.headers)
239
+ raw_resp.content = response.content
240
+ return _unmarshaller(raw_resp, unmarshal_as)