dify-oapi2 0.4.0__py3-none-any.whl → 1.0.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 (215) 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/{completion/v1/model/info → chat/v1/model}/app_info.py +6 -14
  5. dify_oapi/api/chat/v1/model/app_parameters.py +494 -0
  6. dify_oapi/api/chat/v1/model/chat_file.py +53 -0
  7. dify_oapi/api/chat/v1/model/chat_request_body.py +26 -13
  8. dify_oapi/api/chat/v1/model/chat_response.py +13 -2
  9. dify_oapi/api/chat/v1/model/chat_types.py +65 -0
  10. dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +37 -0
  11. dify_oapi/api/chat/v1/model/configure_annotation_reply_request_body.py +39 -0
  12. dify_oapi/api/chat/v1/model/configure_annotation_reply_response.py +10 -0
  13. dify_oapi/api/chat/v1/model/conversation_info.py +57 -0
  14. dify_oapi/api/chat/v1/model/conversation_variable.py +55 -0
  15. dify_oapi/api/chat/v1/model/create_annotation_request.py +30 -0
  16. dify_oapi/api/chat/v1/model/create_annotation_request_body.py +32 -0
  17. dify_oapi/api/chat/v1/model/create_annotation_response.py +9 -0
  18. dify_oapi/api/chat/v1/model/delete_annotation_request.py +26 -0
  19. dify_oapi/api/chat/v1/model/delete_annotation_response.py +7 -0
  20. dify_oapi/api/{completion/v1/model/feedback → chat/v1/model}/feedback_info.py +29 -7
  21. dify_oapi/api/{completion/v1/model/file → chat/v1/model}/file_info.py +6 -0
  22. dify_oapi/api/chat/v1/model/get_annotation_reply_status_request.py +32 -0
  23. dify_oapi/api/chat/v1/model/get_annotation_reply_status_response.py +11 -0
  24. dify_oapi/api/chat/v1/model/get_conversation_list_request.py +25 -24
  25. dify_oapi/api/chat/v1/model/get_conversation_list_response.py +4 -15
  26. dify_oapi/api/chat/v1/model/get_conversation_variables_request.py +54 -0
  27. dify_oapi/api/chat/v1/model/get_conversation_variables_response.py +10 -0
  28. dify_oapi/api/chat/v1/model/get_conversations_request.py +49 -0
  29. dify_oapi/api/chat/v1/model/get_suggested_questions_request.py +36 -0
  30. dify_oapi/api/chat/v1/model/{message_suggested_response.py → get_suggested_questions_response.py} +1 -1
  31. dify_oapi/api/chat/v1/model/list_annotations_request.py +32 -0
  32. dify_oapi/api/chat/v1/model/list_annotations_response.py +11 -0
  33. dify_oapi/api/chat/v1/model/message_file.py +46 -0
  34. dify_oapi/api/chat/v1/model/message_history_request.py +24 -24
  35. dify_oapi/api/chat/v1/model/message_history_response.py +4 -43
  36. dify_oapi/api/chat/v1/model/message_info.py +73 -0
  37. dify_oapi/api/chat/v1/model/pagination_info.py +44 -0
  38. dify_oapi/api/chat/v1/model/rename_conversation_request_body.py +1 -1
  39. dify_oapi/api/chat/v1/model/retriever_resource.py +64 -0
  40. dify_oapi/api/chat/v1/model/site_settings.py +92 -0
  41. dify_oapi/api/chat/v1/model/text_to_audio_response.py +7 -0
  42. dify_oapi/api/chat/v1/model/tool_icon.py +52 -0
  43. dify_oapi/api/chat/v1/model/update_annotation_request.py +34 -0
  44. dify_oapi/api/chat/v1/model/update_annotation_request_body.py +32 -0
  45. dify_oapi/api/chat/v1/model/update_annotation_response.py +9 -0
  46. dify_oapi/api/{completion/v1/model/file → chat/v1/model}/upload_file_request_body.py +9 -3
  47. dify_oapi/api/chat/v1/model/usage_info.py +84 -0
  48. dify_oapi/api/chat/v1/resource/__init__.py +1 -4
  49. dify_oapi/api/chat/v1/resource/annotation.py +87 -0
  50. dify_oapi/api/chat/v1/resource/chat.py +47 -25
  51. dify_oapi/api/chat/v1/resource/conversation.py +45 -33
  52. dify_oapi/api/chat/v1/resource/message.py +22 -20
  53. dify_oapi/api/chat/v1/version.py +18 -5
  54. dify_oapi/api/chatflow/__init__.py +0 -0
  55. dify_oapi/api/chatflow/service.py +8 -0
  56. dify_oapi/api/chatflow/v1/__init__.py +0 -0
  57. dify_oapi/api/chatflow/v1/model/__init__.py +0 -0
  58. dify_oapi/api/chatflow/v1/model/annotation_info.py +43 -0
  59. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request.py +37 -0
  60. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request_body.py +33 -0
  61. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_response.py +10 -0
  62. dify_oapi/api/chatflow/v1/model/annotation_reply_status_request.py +36 -0
  63. dify_oapi/api/chatflow/v1/model/annotation_reply_status_response.py +11 -0
  64. dify_oapi/api/chatflow/v1/model/app_info.py +33 -0
  65. dify_oapi/api/chatflow/v1/model/app_parameters.py +276 -0
  66. dify_oapi/api/chatflow/v1/model/chat_file.py +40 -0
  67. dify_oapi/api/chatflow/v1/model/chat_message.py +88 -0
  68. dify_oapi/api/chatflow/v1/model/chatflow_types.py +210 -0
  69. dify_oapi/api/chatflow/v1/model/conversation_info.py +53 -0
  70. dify_oapi/api/chatflow/v1/model/conversation_variable.py +55 -0
  71. dify_oapi/api/chatflow/v1/model/create_annotation_request.py +30 -0
  72. dify_oapi/api/chatflow/v1/model/create_annotation_request_body.py +28 -0
  73. dify_oapi/api/chatflow/v1/model/create_annotation_response.py +9 -0
  74. dify_oapi/api/chatflow/v1/model/delete_annotation_request.py +28 -0
  75. dify_oapi/api/chatflow/v1/model/delete_annotation_response.py +7 -0
  76. dify_oapi/api/chatflow/v1/model/delete_conversation_request.py +36 -0
  77. dify_oapi/api/chatflow/v1/model/delete_conversation_request_body.py +21 -0
  78. dify_oapi/api/chatflow/v1/model/delete_conversation_response.py +17 -0
  79. dify_oapi/api/chatflow/v1/model/feedback_info.py +75 -0
  80. dify_oapi/api/chatflow/v1/model/file_info.py +53 -0
  81. dify_oapi/api/chatflow/v1/model/get_annotations_request.py +30 -0
  82. dify_oapi/api/chatflow/v1/model/get_annotations_response.py +13 -0
  83. dify_oapi/api/chatflow/v1/model/get_conversation_messages_request.py +38 -0
  84. dify_oapi/api/chatflow/v1/model/get_conversation_messages_response.py +33 -0
  85. dify_oapi/api/chatflow/v1/model/get_conversation_variables_request.py +44 -0
  86. dify_oapi/api/chatflow/v1/model/get_conversation_variables_response.py +33 -0
  87. dify_oapi/api/chatflow/v1/model/get_conversations_request.py +40 -0
  88. dify_oapi/api/chatflow/v1/model/get_conversations_response.py +33 -0
  89. dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
  90. dify_oapi/api/{completion/v1/model/feedback/message_feedback_response.py → chatflow/v1/model/get_suggested_questions_response.py} +2 -3
  91. dify_oapi/api/chatflow/v1/model/rename_conversation_request.py +36 -0
  92. dify_oapi/api/chatflow/v1/model/rename_conversation_request_body.py +31 -0
  93. dify_oapi/api/chatflow/v1/model/rename_conversation_response.py +53 -0
  94. dify_oapi/api/chatflow/v1/model/retriever_resource.py +58 -0
  95. dify_oapi/api/chatflow/v1/model/send_chat_message_request.py +30 -0
  96. dify_oapi/api/chatflow/v1/model/send_chat_message_request_body.py +54 -0
  97. dify_oapi/api/chatflow/v1/model/send_chat_message_response.py +7 -0
  98. dify_oapi/api/chatflow/v1/model/stop_chat_message_request.py +36 -0
  99. dify_oapi/api/chatflow/v1/model/stop_chat_message_request_body.py +21 -0
  100. dify_oapi/api/{dify/v1/model/message_feedback_response.py → chatflow/v1/model/stop_chat_message_response.py} +1 -1
  101. dify_oapi/api/chatflow/v1/model/tool_icon.py +48 -0
  102. dify_oapi/api/chatflow/v1/model/update_annotation_request.py +36 -0
  103. dify_oapi/api/chatflow/v1/model/update_annotation_request_body.py +28 -0
  104. dify_oapi/api/chatflow/v1/model/update_annotation_response.py +9 -0
  105. dify_oapi/api/chatflow/v1/model/usage_info.py +78 -0
  106. dify_oapi/api/chatflow/v1/model/user_input_form.py +141 -0
  107. dify_oapi/api/chatflow/v1/model/webapp_settings.py +88 -0
  108. dify_oapi/api/chatflow/v1/resource/__init__.py +0 -0
  109. dify_oapi/api/chatflow/v1/resource/annotation.py +87 -0
  110. dify_oapi/api/chatflow/v1/resource/chatflow.py +78 -0
  111. dify_oapi/api/chatflow/v1/resource/conversation.py +75 -0
  112. dify_oapi/api/chatflow/v1/version.py +22 -0
  113. dify_oapi/api/completion/v1/resource/__init__.py +0 -6
  114. dify_oapi/api/completion/v1/version.py +8 -6
  115. dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request_body.py +2 -2
  116. dify_oapi/api/{completion/v1/model/feedback → dify/v1/model}/get_feedbacks_request.py +12 -12
  117. dify_oapi/api/dify/v1/model/get_feedbacks_response.py +26 -0
  118. dify_oapi/api/{workflow → dify}/v1/model/get_parameters_request.py +4 -0
  119. dify_oapi/api/dify/v1/model/{get_parameter_response.py → get_parameters_response.py} +6 -2
  120. dify_oapi/api/dify/v1/model/get_site_response.py +17 -0
  121. dify_oapi/api/dify/v1/model/submit_feedback_request.py +34 -0
  122. dify_oapi/api/dify/v1/model/submit_feedback_request_body.py +35 -0
  123. dify_oapi/api/dify/v1/model/submit_feedback_response.py +7 -0
  124. dify_oapi/api/dify/v1/resource/__init__.py +0 -6
  125. dify_oapi/api/dify/v1/resource/audio.py +12 -0
  126. dify_oapi/api/dify/v1/resource/feedback.py +31 -0
  127. dify_oapi/api/dify/v1/resource/info.py +34 -2
  128. dify_oapi/api/dify/v1/version.py +5 -4
  129. dify_oapi/api/knowledge/service.py +3 -3
  130. dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +1 -3
  131. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +4 -46
  132. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body_data.py +73 -0
  133. dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
  134. dify_oapi/api/knowledge/v1/model/dataset_info.py +10 -9
  135. dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
  136. dify_oapi/api/knowledge/v1/model/document_info.py +18 -6
  137. dify_oapi/api/knowledge/v1/model/external_knowledge_info.py +11 -1
  138. dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
  139. dify_oapi/api/knowledge/v1/model/knowledge_types.py +2 -2
  140. dify_oapi/api/knowledge/v1/model/process_rule.py +0 -6
  141. dify_oapi/api/knowledge/v1/model/retrieval_model.py +10 -4
  142. dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +1 -3
  143. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +4 -41
  144. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body_data.py +68 -0
  145. dify_oapi/api/knowledge/v1/model/weights.py +27 -0
  146. dify_oapi/api/knowledge/v1/resource/__init__.py +0 -8
  147. dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
  148. dify_oapi/api/workflow/v1/model/input_file_object_workflow.py +76 -0
  149. dify_oapi/api/workflow/v1/model/node_finished_data.py +118 -0
  150. dify_oapi/api/workflow/v1/model/node_started_data.py +81 -0
  151. dify_oapi/api/workflow/v1/model/ping_data.py +28 -0
  152. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +1 -1
  153. dify_oapi/api/workflow/v1/model/text_chunk_data.py +39 -0
  154. dify_oapi/api/workflow/v1/model/tts_message_data.py +45 -0
  155. dify_oapi/api/workflow/v1/model/tts_message_end_data.py +45 -0
  156. dify_oapi/api/workflow/v1/model/workflow_completion_response.py +50 -0
  157. dify_oapi/api/workflow/v1/model/workflow_finished_data.py +93 -0
  158. dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
  159. dify_oapi/api/workflow/v1/model/workflow_types.py +27 -12
  160. dify_oapi/api/workflow/v1/resource/workflow.py +0 -34
  161. dify_oapi/api/workflow/v1/version.py +9 -0
  162. dify_oapi/client.py +49 -4
  163. dify_oapi/core/http/transport/__init__.py +2 -1
  164. dify_oapi/core/http/transport/async_transport.py +73 -50
  165. dify_oapi/core/http/transport/connection_pool.py +131 -0
  166. dify_oapi/core/http/transport/sync_transport.py +73 -50
  167. dify_oapi/core/model/config.py +10 -0
  168. dify_oapi2-1.0.0.dist-info/METADATA +365 -0
  169. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/RECORD +174 -98
  170. dify_oapi/api/chat/v1/model/chat_request_file.py +0 -46
  171. dify_oapi/api/chat/v1/model/message_suggested_request.py +0 -36
  172. dify_oapi/api/chat/v1/resource/audio.py +0 -17
  173. dify_oapi/api/completion/v1/model/audio/audio_info.py +0 -28
  174. dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +0 -32
  175. dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +0 -33
  176. dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +0 -9
  177. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +0 -9
  178. dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +0 -38
  179. dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +0 -35
  180. dify_oapi/api/completion/v1/model/file/upload_file_request.py +0 -42
  181. dify_oapi/api/completion/v1/model/file/upload_file_response.py +0 -9
  182. dify_oapi/api/completion/v1/model/info/feature_config.py +0 -91
  183. dify_oapi/api/completion/v1/model/info/file_upload_config.py +0 -23
  184. dify_oapi/api/completion/v1/model/info/get_info_request.py +0 -24
  185. dify_oapi/api/completion/v1/model/info/get_info_response.py +0 -9
  186. dify_oapi/api/completion/v1/model/info/get_parameters_request.py +0 -24
  187. dify_oapi/api/completion/v1/model/info/get_parameters_response.py +0 -9
  188. dify_oapi/api/completion/v1/model/info/get_site_response.py +0 -9
  189. dify_oapi/api/completion/v1/model/info/parameters_info.py +0 -75
  190. dify_oapi/api/completion/v1/model/info/site_info.py +0 -90
  191. dify_oapi/api/completion/v1/model/info/system_parameters.py +0 -38
  192. dify_oapi/api/completion/v1/model/info/user_input_form.py +0 -158
  193. dify_oapi/api/completion/v1/resource/audio.py +0 -19
  194. dify_oapi/api/completion/v1/resource/feedback.py +0 -33
  195. dify_oapi/api/completion/v1/resource/file.py +0 -19
  196. dify_oapi/api/completion/v1/resource/info.py +0 -39
  197. dify_oapi/api/dify/v1/model/get_parameter_request.py +0 -30
  198. dify_oapi/api/dify/v1/model/message_feedback_request.py +0 -38
  199. dify_oapi/api/dify/v1/model/message_feedback_request_body.py +0 -30
  200. dify_oapi/api/dify/v1/resource/message.py +0 -21
  201. dify_oapi/api/dify/v1/resource/meta.py +0 -17
  202. dify_oapi/api/dify/v1/resource/parameter.py +0 -19
  203. dify_oapi/api/workflow/v1/model/get_info_request.py +0 -24
  204. dify_oapi/api/workflow/v1/model/get_info_response.py +0 -9
  205. dify_oapi/api/workflow/v1/model/get_parameters_response.py +0 -9
  206. dify_oapi/api/workflow/v1/model/get_site_request.py +0 -24
  207. dify_oapi/api/workflow/v1/model/get_site_response.py +0 -9
  208. dify_oapi/api/workflow/v1/model/upload_file_request.py +0 -42
  209. dify_oapi/api/workflow/v1/model/upload_file_response.py +0 -9
  210. dify_oapi2-0.4.0.dist-info/METADATA +0 -303
  211. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request.py +0 -0
  212. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_response.py +0 -0
  213. /dify_oapi/api/{completion/v1/model/info → dify/v1/model}/get_site_request.py +0 -0
  214. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/LICENSE +0 -0
  215. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,276 @@
1
+ from pydantic import BaseModel
2
+
3
+ from .chatflow_types import AutoPlay, TransferMethod
4
+ from .user_input_form import UserInputFormItem
5
+
6
+
7
+ class SuggestedQuestionsAfterAnswer(BaseModel):
8
+ enabled: bool
9
+
10
+ @staticmethod
11
+ def builder() -> "SuggestedQuestionsAfterAnswerBuilder":
12
+ return SuggestedQuestionsAfterAnswerBuilder()
13
+
14
+
15
+ class SuggestedQuestionsAfterAnswerBuilder:
16
+ def __init__(self):
17
+ self._suggested_questions_after_answer = SuggestedQuestionsAfterAnswer(enabled=False)
18
+
19
+ def build(self) -> SuggestedQuestionsAfterAnswer:
20
+ return self._suggested_questions_after_answer
21
+
22
+ def enabled(self, enabled: bool) -> "SuggestedQuestionsAfterAnswerBuilder":
23
+ self._suggested_questions_after_answer.enabled = enabled
24
+ return self
25
+
26
+
27
+ class SpeechToText(BaseModel):
28
+ enabled: bool
29
+
30
+ @staticmethod
31
+ def builder() -> "SpeechToTextBuilder":
32
+ return SpeechToTextBuilder()
33
+
34
+
35
+ class SpeechToTextBuilder:
36
+ def __init__(self):
37
+ self._speech_to_text = SpeechToText(enabled=False)
38
+
39
+ def build(self) -> SpeechToText:
40
+ return self._speech_to_text
41
+
42
+ def enabled(self, enabled: bool) -> "SpeechToTextBuilder":
43
+ self._speech_to_text.enabled = enabled
44
+ return self
45
+
46
+
47
+ class TextToSpeech(BaseModel):
48
+ enabled: bool
49
+ voice: str | None = None
50
+ language: str | None = None
51
+ auto_play: AutoPlay | None = None
52
+
53
+ @staticmethod
54
+ def builder() -> "TextToSpeechBuilder":
55
+ return TextToSpeechBuilder()
56
+
57
+
58
+ class TextToSpeechBuilder:
59
+ def __init__(self):
60
+ self._text_to_speech = TextToSpeech(enabled=False)
61
+
62
+ def build(self) -> TextToSpeech:
63
+ return self._text_to_speech
64
+
65
+ def enabled(self, enabled: bool) -> "TextToSpeechBuilder":
66
+ self._text_to_speech.enabled = enabled
67
+ return self
68
+
69
+ def voice(self, voice: str) -> "TextToSpeechBuilder":
70
+ self._text_to_speech.voice = voice
71
+ return self
72
+
73
+ def language(self, language: str) -> "TextToSpeechBuilder":
74
+ self._text_to_speech.language = language
75
+ return self
76
+
77
+ def auto_play(self, auto_play: AutoPlay) -> "TextToSpeechBuilder":
78
+ self._text_to_speech.auto_play = auto_play
79
+ return self
80
+
81
+
82
+ class RetrieverResource(BaseModel):
83
+ enabled: bool
84
+
85
+ @staticmethod
86
+ def builder() -> "RetrieverResourceBuilder":
87
+ return RetrieverResourceBuilder()
88
+
89
+
90
+ class RetrieverResourceBuilder:
91
+ def __init__(self):
92
+ self._retriever_resource = RetrieverResource(enabled=False)
93
+
94
+ def build(self) -> RetrieverResource:
95
+ return self._retriever_resource
96
+
97
+ def enabled(self, enabled: bool) -> "RetrieverResourceBuilder":
98
+ self._retriever_resource.enabled = enabled
99
+ return self
100
+
101
+
102
+ class AnnotationReply(BaseModel):
103
+ enabled: bool
104
+
105
+ @staticmethod
106
+ def builder() -> "AnnotationReplyBuilder":
107
+ return AnnotationReplyBuilder()
108
+
109
+
110
+ class AnnotationReplyBuilder:
111
+ def __init__(self):
112
+ self._annotation_reply = AnnotationReply(enabled=False)
113
+
114
+ def build(self) -> AnnotationReply:
115
+ return self._annotation_reply
116
+
117
+ def enabled(self, enabled: bool) -> "AnnotationReplyBuilder":
118
+ self._annotation_reply.enabled = enabled
119
+ return self
120
+
121
+
122
+ class ImageUpload(BaseModel):
123
+ enabled: bool
124
+ number_limits: int | None = None
125
+ detail: str | None = None
126
+ transfer_methods: list[TransferMethod] | None = None
127
+
128
+ @staticmethod
129
+ def builder() -> "ImageUploadBuilder":
130
+ return ImageUploadBuilder()
131
+
132
+
133
+ class ImageUploadBuilder:
134
+ def __init__(self):
135
+ self._image_upload = ImageUpload(enabled=False)
136
+
137
+ def build(self) -> ImageUpload:
138
+ return self._image_upload
139
+
140
+ def enabled(self, enabled: bool) -> "ImageUploadBuilder":
141
+ self._image_upload.enabled = enabled
142
+ return self
143
+
144
+ def number_limits(self, number_limits: int) -> "ImageUploadBuilder":
145
+ self._image_upload.number_limits = number_limits
146
+ return self
147
+
148
+ def detail(self, detail: str) -> "ImageUploadBuilder":
149
+ self._image_upload.detail = detail
150
+ return self
151
+
152
+ def transfer_methods(self, transfer_methods: list[TransferMethod]) -> "ImageUploadBuilder":
153
+ self._image_upload.transfer_methods = transfer_methods
154
+ return self
155
+
156
+
157
+ class FileUpload(BaseModel):
158
+ image: ImageUpload | None = None
159
+
160
+ @staticmethod
161
+ def builder() -> "FileUploadBuilder":
162
+ return FileUploadBuilder()
163
+
164
+
165
+ class FileUploadBuilder:
166
+ def __init__(self):
167
+ self._file_upload = FileUpload()
168
+
169
+ def build(self) -> FileUpload:
170
+ return self._file_upload
171
+
172
+ def image(self, image: ImageUpload) -> "FileUploadBuilder":
173
+ self._file_upload.image = image
174
+ return self
175
+
176
+
177
+ class SystemParameters(BaseModel):
178
+ file_size_limit: int | None = None
179
+ image_file_size_limit: int | None = None
180
+ audio_file_size_limit: int | None = None
181
+ video_file_size_limit: int | None = None
182
+
183
+ @staticmethod
184
+ def builder() -> "SystemParametersBuilder":
185
+ return SystemParametersBuilder()
186
+
187
+
188
+ class SystemParametersBuilder:
189
+ def __init__(self):
190
+ self._system_parameters = SystemParameters()
191
+
192
+ def build(self) -> SystemParameters:
193
+ return self._system_parameters
194
+
195
+ def file_size_limit(self, file_size_limit: int) -> "SystemParametersBuilder":
196
+ self._system_parameters.file_size_limit = file_size_limit
197
+ return self
198
+
199
+ def image_file_size_limit(self, image_file_size_limit: int) -> "SystemParametersBuilder":
200
+ self._system_parameters.image_file_size_limit = image_file_size_limit
201
+ return self
202
+
203
+ def audio_file_size_limit(self, audio_file_size_limit: int) -> "SystemParametersBuilder":
204
+ self._system_parameters.audio_file_size_limit = audio_file_size_limit
205
+ return self
206
+
207
+ def video_file_size_limit(self, video_file_size_limit: int) -> "SystemParametersBuilder":
208
+ self._system_parameters.video_file_size_limit = video_file_size_limit
209
+ return self
210
+
211
+
212
+ class AppParameters(BaseModel):
213
+ opening_statement: str | None = None
214
+ suggested_questions: list[str] | None = None
215
+ suggested_questions_after_answer: SuggestedQuestionsAfterAnswer | None = None
216
+ speech_to_text: SpeechToText | None = None
217
+ text_to_speech: TextToSpeech | None = None
218
+ retriever_resource: RetrieverResource | None = None
219
+ annotation_reply: AnnotationReply | None = None
220
+ user_input_form: list[UserInputFormItem] | None = None
221
+ file_upload: FileUpload | None = None
222
+ system_parameters: SystemParameters | None = None
223
+
224
+ @staticmethod
225
+ def builder() -> "AppParametersBuilder":
226
+ return AppParametersBuilder()
227
+
228
+
229
+ class AppParametersBuilder:
230
+ def __init__(self):
231
+ self._app_parameters = AppParameters()
232
+
233
+ def build(self) -> AppParameters:
234
+ return self._app_parameters
235
+
236
+ def opening_statement(self, opening_statement: str) -> "AppParametersBuilder":
237
+ self._app_parameters.opening_statement = opening_statement
238
+ return self
239
+
240
+ def suggested_questions(self, suggested_questions: list[str]) -> "AppParametersBuilder":
241
+ self._app_parameters.suggested_questions = suggested_questions
242
+ return self
243
+
244
+ def suggested_questions_after_answer(
245
+ self, suggested_questions_after_answer: SuggestedQuestionsAfterAnswer
246
+ ) -> "AppParametersBuilder":
247
+ self._app_parameters.suggested_questions_after_answer = suggested_questions_after_answer
248
+ return self
249
+
250
+ def speech_to_text(self, speech_to_text: SpeechToText) -> "AppParametersBuilder":
251
+ self._app_parameters.speech_to_text = speech_to_text
252
+ return self
253
+
254
+ def text_to_speech(self, text_to_speech: TextToSpeech) -> "AppParametersBuilder":
255
+ self._app_parameters.text_to_speech = text_to_speech
256
+ return self
257
+
258
+ def retriever_resource(self, retriever_resource: RetrieverResource) -> "AppParametersBuilder":
259
+ self._app_parameters.retriever_resource = retriever_resource
260
+ return self
261
+
262
+ def annotation_reply(self, annotation_reply: AnnotationReply) -> "AppParametersBuilder":
263
+ self._app_parameters.annotation_reply = annotation_reply
264
+ return self
265
+
266
+ def user_input_form(self, user_input_form: list[UserInputFormItem]) -> "AppParametersBuilder":
267
+ self._app_parameters.user_input_form = user_input_form
268
+ return self
269
+
270
+ def file_upload(self, file_upload: FileUpload) -> "AppParametersBuilder":
271
+ self._app_parameters.file_upload = file_upload
272
+ return self
273
+
274
+ def system_parameters(self, system_parameters: SystemParameters) -> "AppParametersBuilder":
275
+ self._app_parameters.system_parameters = system_parameters
276
+ return self
@@ -0,0 +1,40 @@
1
+ from pydantic import BaseModel
2
+
3
+ from .chatflow_types import FileType, TransferMethod
4
+
5
+
6
+ class ChatFile(BaseModel):
7
+ """File attachment model for chat messages."""
8
+
9
+ type: FileType | None = None
10
+ transfer_method: TransferMethod | None = None
11
+ url: str | None = None
12
+ upload_file_id: str | None = None
13
+
14
+ @staticmethod
15
+ def builder() -> "ChatFileBuilder":
16
+ return ChatFileBuilder()
17
+
18
+
19
+ class ChatFileBuilder:
20
+ def __init__(self):
21
+ self._chat_file = ChatFile()
22
+
23
+ def build(self) -> ChatFile:
24
+ return self._chat_file
25
+
26
+ def type(self, type: FileType) -> "ChatFileBuilder":
27
+ self._chat_file.type = type
28
+ return self
29
+
30
+ def transfer_method(self, transfer_method: TransferMethod) -> "ChatFileBuilder":
31
+ self._chat_file.transfer_method = transfer_method
32
+ return self
33
+
34
+ def url(self, url: str) -> "ChatFileBuilder":
35
+ self._chat_file.url = url
36
+ return self
37
+
38
+ def upload_file_id(self, upload_file_id: str) -> "ChatFileBuilder":
39
+ self._chat_file.upload_file_id = upload_file_id
40
+ return self
@@ -0,0 +1,88 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .chatflow_types import FeedbackRating, MessageFileBelongsTo
8
+ from .retriever_resource import RetrieverResource
9
+
10
+ if TYPE_CHECKING:
11
+ pass
12
+
13
+
14
+ class MessageFile(BaseModel):
15
+ """Message file attachment model."""
16
+
17
+ id: str | None = None
18
+ type: str | None = None
19
+ url: str | None = None
20
+ belongs_to: MessageFileBelongsTo | None = None
21
+
22
+
23
+ class MessageFeedback(BaseModel):
24
+ """Message feedback model."""
25
+
26
+ rating: FeedbackRating | None = None
27
+
28
+
29
+ class ChatMessage(BaseModel):
30
+ """Core chat message model."""
31
+
32
+ id: str | None = None
33
+ conversation_id: str | None = None
34
+ inputs: dict[str, str] | None = None
35
+ query: str | None = None
36
+ answer: str | None = None
37
+ message_files: list[MessageFile] | None = None
38
+ feedback: MessageFeedback | None = None
39
+ retriever_resources: list[RetrieverResource] | None = None
40
+ created_at: int | None = None
41
+
42
+ @staticmethod
43
+ def builder() -> ChatMessageBuilder:
44
+ return ChatMessageBuilder()
45
+
46
+
47
+ class ChatMessageBuilder:
48
+ def __init__(self):
49
+ self._chat_message = ChatMessage()
50
+
51
+ def build(self) -> ChatMessage:
52
+ return self._chat_message
53
+
54
+ def id(self, id: str) -> ChatMessageBuilder:
55
+ self._chat_message.id = id
56
+ return self
57
+
58
+ def conversation_id(self, conversation_id: str) -> ChatMessageBuilder:
59
+ self._chat_message.conversation_id = conversation_id
60
+ return self
61
+
62
+ def inputs(self, inputs: dict[str, str]) -> ChatMessageBuilder:
63
+ self._chat_message.inputs = inputs
64
+ return self
65
+
66
+ def query(self, query: str) -> ChatMessageBuilder:
67
+ self._chat_message.query = query
68
+ return self
69
+
70
+ def answer(self, answer: str) -> ChatMessageBuilder:
71
+ self._chat_message.answer = answer
72
+ return self
73
+
74
+ def message_files(self, message_files: list[MessageFile]) -> ChatMessageBuilder:
75
+ self._chat_message.message_files = message_files
76
+ return self
77
+
78
+ def feedback(self, feedback: MessageFeedback) -> ChatMessageBuilder:
79
+ self._chat_message.feedback = feedback
80
+ return self
81
+
82
+ def retriever_resources(self, retriever_resources: list[RetrieverResource]) -> ChatMessageBuilder:
83
+ self._chat_message.retriever_resources = retriever_resources
84
+ return self
85
+
86
+ def created_at(self, created_at: int) -> ChatMessageBuilder:
87
+ self._chat_message.created_at = created_at
88
+ return self
@@ -0,0 +1,210 @@
1
+ """Strict type definitions for all Chatflow API enums and constants.
2
+
3
+ This module defines all Literal types used throughout the Chatflow API
4
+ to ensure type safety and prevent invalid values.
5
+ """
6
+
7
+ from typing import Literal
8
+
9
+ # Response mode types for chat messages
10
+ ResponseMode = Literal["streaming", "blocking"]
11
+ """Response mode for chat messages.
12
+ - streaming: Real-time streaming response
13
+ - blocking: Complete response after processing (Cloudflare timeout is 100s)
14
+ """
15
+
16
+ # File types for file attachments
17
+ FileType = Literal["document", "image", "audio", "video", "custom"]
18
+ """File type for attachments.
19
+ - document: TXT, MD, PDF, HTML, XLSX, DOCX, CSV, EML, MSG, PPTX, XML, EPUB
20
+ - image: JPG, PNG, GIF, WEBP, SVG
21
+ - audio: MP3, M4A, WAV, WEBM, AMR
22
+ - video: MP4, MOV, MPEG, MPGA
23
+ - custom: Custom file type
24
+ """
25
+
26
+ # Transfer method types for file handling
27
+ TransferMethod = Literal["remote_url", "local_file"]
28
+ """Transfer method for file handling.
29
+ - remote_url: File URL for remote files
30
+ - local_file: File upload for local files
31
+ """
32
+
33
+ # Stream event types for real-time responses
34
+ StreamEvent = Literal[
35
+ "message",
36
+ "message_file",
37
+ "message_end",
38
+ "tts_message",
39
+ "tts_message_end",
40
+ "message_replace",
41
+ "workflow_started",
42
+ "node_started",
43
+ "node_finished",
44
+ "workflow_finished",
45
+ "error",
46
+ "ping",
47
+ ]
48
+ """Stream event types for real-time chat responses.
49
+ - message: Chat message content chunk
50
+ - message_file: File attachment information
51
+ - message_end: End of message with metadata
52
+ - tts_message: Text-to-speech audio chunk (Base64 encoded)
53
+ - tts_message_end: End of TTS conversion
54
+ - message_replace: Replace previous message content
55
+ - workflow_started: Workflow execution started
56
+ - node_started: Workflow node execution started
57
+ - node_finished: Workflow node execution finished
58
+ - workflow_finished: Workflow execution completed
59
+ - error: Error occurred during processing
60
+ - ping: Keep-alive ping
61
+ """
62
+
63
+ # Message file belongs to types
64
+ MessageFileBelongsTo = Literal["user", "assistant"]
65
+ """Message file ownership.
66
+ - user: File belongs to user
67
+ - assistant: File belongs to assistant
68
+ """
69
+
70
+ # Feedback rating types
71
+ FeedbackRating = Literal["like", "dislike"]
72
+ """Feedback rating types.
73
+ - like: Positive feedback
74
+ - dislike: Negative feedback
75
+ """
76
+
77
+ # Sort by types for conversation listing
78
+ SortBy = Literal["created_at", "-created_at", "updated_at", "-updated_at"]
79
+ """Sort by options for conversation listing.
80
+ - created_at: Sort by creation time (ascending)
81
+ - -created_at: Sort by creation time (descending)
82
+ - updated_at: Sort by update time (ascending)
83
+ - -updated_at: Sort by update time (descending)
84
+ """
85
+
86
+ # Conversation status types
87
+ ConversationStatus = Literal["normal", "archived"]
88
+ """Conversation status types.
89
+ - normal: Active conversation
90
+ - archived: Archived conversation
91
+ """
92
+
93
+ # Variable value types
94
+ VariableValueType = Literal["string", "number", "select"]
95
+ """Variable value types for conversation variables.
96
+ - string: String value
97
+ - number: Numeric value
98
+ - select: Selection value
99
+ """
100
+
101
+ # Form input types for user input forms
102
+ FormInputType = Literal["text-input", "paragraph", "select"]
103
+ """Form input types for user input forms.
104
+ - text-input: Single line text input
105
+ - paragraph: Multi-line text input
106
+ - select: Selection dropdown
107
+ """
108
+
109
+ # Job status types for annotation operations
110
+ JobStatus = Literal["waiting", "running", "completed", "failed"]
111
+ """Job status types for annotation operations.
112
+ - waiting: Job is waiting to start
113
+ - running: Job is currently running
114
+ - completed: Job completed successfully
115
+ - failed: Job failed with error
116
+ """
117
+
118
+ # Audio format types for TTS operations
119
+ AudioFormat = Literal["mp3", "mp4", "mpeg", "mpga", "m4a", "wav", "webm"]
120
+ """Audio format types for TTS operations.
121
+ - mp3: MP3 audio format
122
+ - mp4: MP4 audio format
123
+ - mpeg: MPEG audio format
124
+ - mpga: MPGA audio format
125
+ - m4a: M4A audio format
126
+ - wav: WAV audio format
127
+ - webm: WebM audio format
128
+ """
129
+
130
+ # Language codes for internationalization
131
+ LanguageCode = Literal["en", "zh", "ja", "ko", "es", "fr", "de", "it", "pt", "ru"]
132
+ """Language codes for internationalization.
133
+ - en: English
134
+ - zh: Chinese
135
+ - ja: Japanese
136
+ - ko: Korean
137
+ - es: Spanish
138
+ - fr: French
139
+ - de: German
140
+ - it: Italian
141
+ - pt: Portuguese
142
+ - ru: Russian
143
+ """
144
+
145
+ # Chat color theme types
146
+ ChatColorTheme = Literal["blue", "green", "purple", "orange", "red"]
147
+ """Chat color theme types for UI customization.
148
+ - blue: Blue theme
149
+ - green: Green theme
150
+ - purple: Purple theme
151
+ - orange: Orange theme
152
+ - red: Red theme
153
+ """
154
+
155
+ # Default language types for application settings
156
+ DefaultLanguage = Literal[
157
+ "en-US", "zh-Hans", "zh-Hant", "ja-JP", "ko-KR", "es-ES", "fr-FR", "de-DE", "it-IT", "pt-BR", "ru-RU"
158
+ ]
159
+ """Default language types for application settings.
160
+ - en-US: English (United States)
161
+ - zh-Hans: Chinese (Simplified)
162
+ - zh-Hant: Chinese (Traditional)
163
+ - ja-JP: Japanese (Japan)
164
+ - ko-KR: Korean (Korea)
165
+ - es-ES: Spanish (Spain)
166
+ - fr-FR: French (France)
167
+ - de-DE: German (Germany)
168
+ - it-IT: Italian (Italy)
169
+ - pt-BR: Portuguese (Brazil)
170
+ - ru-RU: Russian (Russia)
171
+ """
172
+
173
+ # Icon types for application settings
174
+ IconType = Literal["emoji", "image"]
175
+ """Icon types for application settings.
176
+ - emoji: Emoji icon
177
+ - image: Image icon
178
+ """
179
+
180
+ # AutoPlay types for TTS settings
181
+ AutoPlay = Literal["enabled", "disabled"]
182
+ """AutoPlay types for TTS settings.
183
+ - enabled: Auto-play enabled
184
+ - disabled: Auto-play disabled
185
+ """
186
+
187
+ # Annotation action types
188
+ AnnotationAction = Literal["enable", "disable"]
189
+ """Annotation action types for reply settings.
190
+ - enable: Enable annotation reply
191
+ - disable: Disable annotation reply
192
+ """
193
+
194
+ # Node status types for workflow operations
195
+ NodeStatus = Literal["running", "succeeded", "failed", "stopped"]
196
+ """Node status types for workflow operations.
197
+ - running: Node is currently running
198
+ - succeeded: Node completed successfully
199
+ - failed: Node failed with error
200
+ - stopped: Node was stopped
201
+ """
202
+
203
+ # Workflow status types
204
+ WorkflowStatus = Literal["running", "succeeded", "failed", "stopped"]
205
+ """Workflow status types.
206
+ - running: Workflow is currently running
207
+ - succeeded: Workflow completed successfully
208
+ - failed: Workflow failed with error
209
+ - stopped: Workflow was stopped
210
+ """
@@ -0,0 +1,53 @@
1
+ from pydantic import BaseModel
2
+
3
+
4
+ class ConversationInfo(BaseModel):
5
+ """Conversation information model."""
6
+
7
+ id: str | None = None
8
+ name: str | None = None
9
+ inputs: dict[str, str] | None = None
10
+ status: str | None = None
11
+ introduction: str | None = None
12
+ created_at: int | None = None
13
+ updated_at: int | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> "ConversationInfoBuilder":
17
+ return ConversationInfoBuilder()
18
+
19
+
20
+ class ConversationInfoBuilder:
21
+ def __init__(self):
22
+ self._conversation_info = ConversationInfo()
23
+
24
+ def build(self) -> ConversationInfo:
25
+ return self._conversation_info
26
+
27
+ def id(self, id: str) -> "ConversationInfoBuilder":
28
+ self._conversation_info.id = id
29
+ return self
30
+
31
+ def name(self, name: str) -> "ConversationInfoBuilder":
32
+ self._conversation_info.name = name
33
+ return self
34
+
35
+ def inputs(self, inputs: dict[str, str]) -> "ConversationInfoBuilder":
36
+ self._conversation_info.inputs = inputs
37
+ return self
38
+
39
+ def status(self, status: str) -> "ConversationInfoBuilder":
40
+ self._conversation_info.status = status
41
+ return self
42
+
43
+ def introduction(self, introduction: str) -> "ConversationInfoBuilder":
44
+ self._conversation_info.introduction = introduction
45
+ return self
46
+
47
+ def created_at(self, created_at: int) -> "ConversationInfoBuilder":
48
+ self._conversation_info.created_at = created_at
49
+ return self
50
+
51
+ def updated_at(self, updated_at: int) -> "ConversationInfoBuilder":
52
+ self._conversation_info.updated_at = updated_at
53
+ return self