dify-oapi2 0.5.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 (136) hide show
  1. dify_oapi/api/chat/v1/model/chat_response.py +1 -0
  2. dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +1 -0
  3. dify_oapi/api/chat/v1/model/create_annotation_request.py +1 -0
  4. dify_oapi/api/chat/v1/model/get_conversations_request.py +49 -0
  5. dify_oapi/api/chat/v1/model/update_annotation_request.py +1 -0
  6. dify_oapi/api/chat/v1/resource/__init__.py +1 -8
  7. dify_oapi/api/chat/v1/resource/annotation.py +37 -27
  8. dify_oapi/api/chat/v1/resource/chat.py +37 -29
  9. dify_oapi/api/chat/v1/resource/conversation.py +25 -59
  10. dify_oapi/api/chat/v1/resource/message.py +13 -15
  11. dify_oapi/api/chat/v1/version.py +18 -11
  12. dify_oapi/api/chatflow/service.py +1 -18
  13. dify_oapi/api/chatflow/v1/resource/annotation.py +14 -49
  14. dify_oapi/api/chatflow/v1/resource/chatflow.py +6 -19
  15. dify_oapi/api/chatflow/v1/resource/conversation.py +12 -41
  16. dify_oapi/api/chatflow/v1/version.py +11 -18
  17. dify_oapi/api/completion/v1/resource/__init__.py +0 -6
  18. dify_oapi/api/completion/v1/version.py +8 -6
  19. dify_oapi/api/dify/v1/model/get_feedbacks_response.py +26 -0
  20. dify_oapi/api/{completion/v1/model/info → dify/v1/model}/get_parameters_request.py +4 -0
  21. dify_oapi/api/dify/v1/model/{get_parameter_response.py → get_parameters_response.py} +6 -2
  22. dify_oapi/api/dify/v1/model/get_site_response.py +17 -0
  23. dify_oapi/api/{chat → dify}/v1/model/submit_feedback_request_body.py +3 -1
  24. dify_oapi/api/{chat → dify}/v1/model/submit_feedback_response.py +3 -1
  25. dify_oapi/api/dify/v1/resource/__init__.py +0 -6
  26. dify_oapi/api/dify/v1/resource/audio.py +12 -0
  27. dify_oapi/api/{chat → dify}/v1/resource/feedback.py +6 -6
  28. dify_oapi/api/dify/v1/resource/info.py +34 -2
  29. dify_oapi/api/dify/v1/version.py +5 -4
  30. dify_oapi/api/knowledge/service.py +3 -3
  31. dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +1 -3
  32. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +4 -46
  33. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body_data.py +73 -0
  34. dify_oapi/api/knowledge/v1/model/process_rule.py +0 -6
  35. dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +1 -3
  36. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +4 -41
  37. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body_data.py +68 -0
  38. dify_oapi/api/knowledge/v1/resource/__init__.py +0 -8
  39. dify_oapi/api/workflow/v1/resource/workflow.py +0 -34
  40. dify_oapi/api/workflow/v1/version.py +9 -0
  41. dify_oapi/client.py +4 -4
  42. dify_oapi2-1.0.0.dist-info/METADATA +365 -0
  43. {dify_oapi2-0.5.0.dist-info → dify_oapi2-1.0.0.dist-info}/RECORD +51 -130
  44. dify_oapi/api/chat/v1/model/get_app_info_request.py +0 -24
  45. dify_oapi/api/chat/v1/model/get_app_info_response.py +0 -9
  46. dify_oapi/api/chat/v1/model/get_app_meta_request.py +0 -24
  47. dify_oapi/api/chat/v1/model/get_app_meta_response.py +0 -9
  48. dify_oapi/api/chat/v1/model/get_app_parameters_request.py +0 -28
  49. dify_oapi/api/chat/v1/model/get_app_parameters_response.py +0 -9
  50. dify_oapi/api/chat/v1/model/get_feedbacks_response.py +0 -7
  51. dify_oapi/api/chat/v1/model/get_site_settings_request.py +0 -24
  52. dify_oapi/api/chat/v1/model/get_site_settings_response.py +0 -9
  53. dify_oapi/api/chat/v1/model/text_to_audio_request.py +0 -32
  54. dify_oapi/api/chat/v1/model/text_to_audio_request_body.py +0 -33
  55. dify_oapi/api/chat/v1/model/upload_file_request.py +0 -54
  56. dify_oapi/api/chat/v1/model/upload_file_response.py +0 -10
  57. dify_oapi/api/chat/v1/resource/app.py +0 -47
  58. dify_oapi/api/chat/v1/resource/audio.py +0 -30
  59. dify_oapi/api/chat/v1/resource/file.py +0 -25
  60. dify_oapi/api/chatflow/v1/model/audio_to_text_request.py +0 -37
  61. dify_oapi/api/chatflow/v1/model/audio_to_text_response.py +0 -21
  62. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_request.py +0 -30
  63. dify_oapi/api/chatflow/v1/model/get_app_feedbacks_response.py +0 -23
  64. dify_oapi/api/chatflow/v1/model/get_info_request.py +0 -22
  65. dify_oapi/api/chatflow/v1/model/get_info_response.py +0 -7
  66. dify_oapi/api/chatflow/v1/model/get_meta_request.py +0 -22
  67. dify_oapi/api/chatflow/v1/model/get_meta_response.py +0 -7
  68. dify_oapi/api/chatflow/v1/model/get_parameters_request.py +0 -22
  69. dify_oapi/api/chatflow/v1/model/get_parameters_response.py +0 -7
  70. dify_oapi/api/chatflow/v1/model/get_site_request.py +0 -22
  71. dify_oapi/api/chatflow/v1/model/get_site_response.py +0 -7
  72. dify_oapi/api/chatflow/v1/model/message_feedback_request.py +0 -36
  73. dify_oapi/api/chatflow/v1/model/message_feedback_request_body.py +0 -33
  74. dify_oapi/api/chatflow/v1/model/message_feedback_response.py +0 -21
  75. dify_oapi/api/chatflow/v1/model/text_to_audio_request.py +0 -30
  76. dify_oapi/api/chatflow/v1/model/text_to_audio_request_body.py +0 -36
  77. dify_oapi/api/chatflow/v1/model/text_to_audio_response.py +0 -19
  78. dify_oapi/api/chatflow/v1/model/upload_file_request.py +0 -41
  79. dify_oapi/api/chatflow/v1/model/upload_file_response.py +0 -11
  80. dify_oapi/api/chatflow/v1/resource/application.py +0 -76
  81. dify_oapi/api/chatflow/v1/resource/feedback.py +0 -69
  82. dify_oapi/api/chatflow/v1/resource/file.py +0 -39
  83. dify_oapi/api/chatflow/v1/resource/tts.py +0 -29
  84. dify_oapi/api/completion/v1/model/audio/audio_info.py +0 -28
  85. dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +0 -32
  86. dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +0 -33
  87. dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +0 -9
  88. dify_oapi/api/completion/v1/model/feedback/feedback_info.py +0 -53
  89. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_request.py +0 -32
  90. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +0 -9
  91. dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +0 -38
  92. dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +0 -35
  93. dify_oapi/api/completion/v1/model/feedback/message_feedback_response.py +0 -7
  94. dify_oapi/api/completion/v1/model/file/file_info.py +0 -53
  95. dify_oapi/api/completion/v1/model/file/upload_file_request.py +0 -42
  96. dify_oapi/api/completion/v1/model/file/upload_file_request_body.py +0 -23
  97. dify_oapi/api/completion/v1/model/file/upload_file_response.py +0 -9
  98. dify_oapi/api/completion/v1/model/info/app_info.py +0 -43
  99. dify_oapi/api/completion/v1/model/info/feature_config.py +0 -91
  100. dify_oapi/api/completion/v1/model/info/file_upload_config.py +0 -23
  101. dify_oapi/api/completion/v1/model/info/get_info_request.py +0 -24
  102. dify_oapi/api/completion/v1/model/info/get_info_response.py +0 -9
  103. dify_oapi/api/completion/v1/model/info/get_parameters_response.py +0 -9
  104. dify_oapi/api/completion/v1/model/info/get_site_response.py +0 -9
  105. dify_oapi/api/completion/v1/model/info/parameters_info.py +0 -75
  106. dify_oapi/api/completion/v1/model/info/site_info.py +0 -90
  107. dify_oapi/api/completion/v1/model/info/system_parameters.py +0 -38
  108. dify_oapi/api/completion/v1/model/info/user_input_form.py +0 -158
  109. dify_oapi/api/completion/v1/resource/audio.py +0 -19
  110. dify_oapi/api/completion/v1/resource/feedback.py +0 -33
  111. dify_oapi/api/completion/v1/resource/file.py +0 -19
  112. dify_oapi/api/completion/v1/resource/info.py +0 -39
  113. dify_oapi/api/dify/v1/model/get_parameter_request.py +0 -30
  114. dify_oapi/api/dify/v1/model/message_feedback_request.py +0 -38
  115. dify_oapi/api/dify/v1/model/message_feedback_request_body.py +0 -30
  116. dify_oapi/api/dify/v1/model/message_feedback_response.py +0 -5
  117. dify_oapi/api/dify/v1/resource/message.py +0 -21
  118. dify_oapi/api/dify/v1/resource/meta.py +0 -17
  119. dify_oapi/api/dify/v1/resource/parameter.py +0 -19
  120. dify_oapi/api/workflow/v1/model/get_info_request.py +0 -24
  121. dify_oapi/api/workflow/v1/model/get_info_response.py +0 -9
  122. dify_oapi/api/workflow/v1/model/get_parameters_request.py +0 -24
  123. dify_oapi/api/workflow/v1/model/get_parameters_response.py +0 -9
  124. dify_oapi/api/workflow/v1/model/get_site_request.py +0 -24
  125. dify_oapi/api/workflow/v1/model/get_site_response.py +0 -9
  126. dify_oapi/api/workflow/v1/model/upload_file_request.py +0 -42
  127. dify_oapi/api/workflow/v1/model/upload_file_response.py +0 -9
  128. dify_oapi2-0.5.0.dist-info/METADATA +0 -335
  129. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request.py +0 -0
  130. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request_body.py +0 -0
  131. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_response.py +0 -0
  132. /dify_oapi/api/{chat → dify}/v1/model/get_feedbacks_request.py +0 -0
  133. /dify_oapi/api/{completion/v1/model/info → dify/v1/model}/get_site_request.py +0 -0
  134. /dify_oapi/api/{chat → dify}/v1/model/submit_feedback_request.py +0 -0
  135. {dify_oapi2-0.5.0.dist-info → dify_oapi2-1.0.0.dist-info}/LICENSE +0 -0
  136. {dify_oapi2-0.5.0.dist-info → dify_oapi2-1.0.0.dist-info}/WHEEL +0 -0
@@ -1,8 +1,7 @@
1
1
  from collections.abc import AsyncGenerator, Generator
2
2
  from typing import Literal, overload
3
3
 
4
- from dify_oapi.core.http.transport.async_transport import ATransport
5
- from dify_oapi.core.http.transport.sync_transport import Transport
4
+ from dify_oapi.core.http.transport import ATransport, Transport
6
5
  from dify_oapi.core.model.config import Config
7
6
  from dify_oapi.core.model.request_option import RequestOption
8
7
 
@@ -15,7 +14,7 @@ from ..model.stop_chat_message_response import StopChatMessageResponse
15
14
 
16
15
 
17
16
  class Chatflow:
18
- def __init__(self, config: Config):
17
+ def __init__(self, config: Config) -> None:
19
18
  self.config = config
20
19
 
21
20
  @overload
@@ -56,35 +55,23 @@ class Chatflow:
56
55
  self.config, request, unmarshal_as=SendChatMessageResponse, option=request_option
57
56
  )
58
57
 
59
- def stop(
60
- self,
61
- request: StopChatMessageRequest,
62
- request_option: RequestOption,
63
- ) -> StopChatMessageResponse:
58
+ def stop(self, request: StopChatMessageRequest, request_option: RequestOption) -> StopChatMessageResponse:
64
59
  return Transport.execute(self.config, request, unmarshal_as=StopChatMessageResponse, option=request_option)
65
60
 
66
- async def astop(
67
- self,
68
- request: StopChatMessageRequest,
69
- request_option: RequestOption,
70
- ) -> StopChatMessageResponse:
61
+ async def astop(self, request: StopChatMessageRequest, request_option: RequestOption) -> StopChatMessageResponse:
71
62
  return await ATransport.aexecute(
72
63
  self.config, request, unmarshal_as=StopChatMessageResponse, option=request_option
73
64
  )
74
65
 
75
66
  def suggested(
76
- self,
77
- request: GetSuggestedQuestionsRequest,
78
- request_option: RequestOption,
67
+ self, request: GetSuggestedQuestionsRequest, request_option: RequestOption
79
68
  ) -> GetSuggestedQuestionsResponse:
80
69
  return Transport.execute(
81
70
  self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=request_option
82
71
  )
83
72
 
84
73
  async def asuggested(
85
- self,
86
- request: GetSuggestedQuestionsRequest,
87
- request_option: RequestOption,
74
+ self, request: GetSuggestedQuestionsRequest, request_option: RequestOption
88
75
  ) -> GetSuggestedQuestionsResponse:
89
76
  return await ATransport.aexecute(
90
77
  self.config, request, unmarshal_as=GetSuggestedQuestionsResponse, option=request_option
@@ -1,5 +1,4 @@
1
- from dify_oapi.core.http.transport.async_transport import ATransport
2
- from dify_oapi.core.http.transport.sync_transport import Transport
1
+ from dify_oapi.core.http.transport import ATransport, Transport
3
2
  from dify_oapi.core.model.config import Config
4
3
  from dify_oapi.core.model.request_option import RequestOption
5
4
 
@@ -16,88 +15,60 @@ from ..model.rename_conversation_response import RenameConversationResponse
16
15
 
17
16
 
18
17
  class Conversation:
19
- def __init__(self, config: Config):
18
+ def __init__(self, config: Config) -> None:
20
19
  self.config = config
21
20
 
22
21
  def messages(
23
- self,
24
- request: GetConversationMessagesRequest,
25
- request_option: RequestOption,
22
+ self, request: GetConversationMessagesRequest, request_option: RequestOption
26
23
  ) -> GetConversationMessagesResponse:
27
24
  return Transport.execute(
28
25
  self.config, request, unmarshal_as=GetConversationMessagesResponse, option=request_option
29
26
  )
30
27
 
31
28
  async def amessages(
32
- self,
33
- request: GetConversationMessagesRequest,
34
- request_option: RequestOption,
29
+ self, request: GetConversationMessagesRequest, request_option: RequestOption
35
30
  ) -> GetConversationMessagesResponse:
36
31
  return await ATransport.aexecute(
37
32
  self.config, request, unmarshal_as=GetConversationMessagesResponse, option=request_option
38
33
  )
39
34
 
40
- def list(
41
- self,
42
- request: GetConversationsRequest,
43
- request_option: RequestOption,
44
- ) -> GetConversationsResponse:
35
+ def list(self, request: GetConversationsRequest, request_option: RequestOption) -> GetConversationsResponse:
45
36
  return Transport.execute(self.config, request, unmarshal_as=GetConversationsResponse, option=request_option)
46
37
 
47
- async def alist(
48
- self,
49
- request: GetConversationsRequest,
50
- request_option: RequestOption,
51
- ) -> GetConversationsResponse:
38
+ async def alist(self, request: GetConversationsRequest, request_option: RequestOption) -> GetConversationsResponse:
52
39
  return await ATransport.aexecute(
53
40
  self.config, request, unmarshal_as=GetConversationsResponse, option=request_option
54
41
  )
55
42
 
56
- def delete(
57
- self,
58
- request: DeleteConversationRequest,
59
- request_option: RequestOption,
60
- ) -> DeleteConversationResponse:
43
+ def delete(self, request: DeleteConversationRequest, request_option: RequestOption) -> DeleteConversationResponse:
61
44
  return Transport.execute(self.config, request, unmarshal_as=DeleteConversationResponse, option=request_option)
62
45
 
63
46
  async def adelete(
64
- self,
65
- request: DeleteConversationRequest,
66
- request_option: RequestOption,
47
+ self, request: DeleteConversationRequest, request_option: RequestOption
67
48
  ) -> DeleteConversationResponse:
68
49
  return await ATransport.aexecute(
69
50
  self.config, request, unmarshal_as=DeleteConversationResponse, option=request_option
70
51
  )
71
52
 
72
- def rename(
73
- self,
74
- request: RenameConversationRequest,
75
- request_option: RequestOption,
76
- ) -> RenameConversationResponse:
53
+ def rename(self, request: RenameConversationRequest, request_option: RequestOption) -> RenameConversationResponse:
77
54
  return Transport.execute(self.config, request, unmarshal_as=RenameConversationResponse, option=request_option)
78
55
 
79
56
  async def arename(
80
- self,
81
- request: RenameConversationRequest,
82
- request_option: RequestOption,
57
+ self, request: RenameConversationRequest, request_option: RequestOption
83
58
  ) -> RenameConversationResponse:
84
59
  return await ATransport.aexecute(
85
60
  self.config, request, unmarshal_as=RenameConversationResponse, option=request_option
86
61
  )
87
62
 
88
63
  def variables(
89
- self,
90
- request: GetConversationVariablesRequest,
91
- request_option: RequestOption,
64
+ self, request: GetConversationVariablesRequest, request_option: RequestOption
92
65
  ) -> GetConversationVariablesResponse:
93
66
  return Transport.execute(
94
67
  self.config, request, unmarshal_as=GetConversationVariablesResponse, option=request_option
95
68
  )
96
69
 
97
70
  async def avariables(
98
- self,
99
- request: GetConversationVariablesRequest,
100
- request_option: RequestOption,
71
+ self, request: GetConversationVariablesRequest, request_option: RequestOption
101
72
  ) -> GetConversationVariablesResponse:
102
73
  return await ATransport.aexecute(
103
74
  self.config, request, unmarshal_as=GetConversationVariablesResponse, option=request_option
@@ -1,29 +1,22 @@
1
- """Chatflow API V1 version integration."""
2
-
1
+ from dify_oapi.api.dify.v1.resource.audio import Audio
2
+ from dify_oapi.api.dify.v1.resource.feedback import Feedback
3
+ from dify_oapi.api.dify.v1.resource.file import File
4
+ from dify_oapi.api.dify.v1.resource.info import Info
3
5
  from dify_oapi.core.model.config import Config
4
6
 
5
7
  from .resource.annotation import Annotation
6
- from .resource.application import Application
7
8
  from .resource.chatflow import Chatflow
8
9
  from .resource.conversation import Conversation
9
- from .resource.feedback import Feedback
10
- from .resource.file import File
11
- from .resource.tts import TTS
12
10
 
13
11
 
14
12
  class V1:
15
- """Chatflow API V1 version class that integrates all resources."""
16
-
17
- def __init__(self, config: Config):
18
- """Initialize V1 with all chatflow resources.
19
-
20
- Args:
21
- config: Configuration object containing API settings
22
- """
13
+ def __init__(self, config: Config) -> None:
14
+ # Business-specific APIs
23
15
  self.chatflow = Chatflow(config)
24
- self.file = File(config)
25
- self.feedback = Feedback(config)
26
16
  self.conversation = Conversation(config)
27
- self.tts = TTS(config)
28
- self.application = Application(config)
29
17
  self.annotation = Annotation(config)
18
+ # System APIs - direct use of dify module
19
+ self.file = File(config)
20
+ self.tts = Audio(config)
21
+ self.application = Info(config)
22
+ self.feedback = Feedback(config)
@@ -1,6 +0,0 @@
1
- from .annotation import * # noqa 403
2
- from .audio import * # noqa 403
3
- from .completion import * # noqa 403
4
- from .feedback import * # noqa 403
5
- from .file import * # noqa 403
6
- from .info import * # noqa 403
@@ -1,18 +1,20 @@
1
+ from dify_oapi.api.dify.v1.resource.audio import Audio
2
+ from dify_oapi.api.dify.v1.resource.feedback import Feedback
3
+ from dify_oapi.api.dify.v1.resource.file import File
4
+ from dify_oapi.api.dify.v1.resource.info import Info
1
5
  from dify_oapi.core.model.config import Config
2
6
 
3
7
  from .resource.annotation import Annotation
4
- from .resource.audio import Audio
5
8
  from .resource.completion import Completion
6
- from .resource.feedback import Feedback
7
- from .resource.file import File
8
- from .resource.info import Info
9
9
 
10
10
 
11
11
  class V1:
12
12
  def __init__(self, config: Config):
13
+ # Business-specific APIs
13
14
  self.completion: Completion = Completion(config)
15
+ self.annotation: Annotation = Annotation(config)
16
+ # System APIs - direct use of dify module
14
17
  self.file: File = File(config)
15
- self.feedback: Feedback = Feedback(config)
16
18
  self.audio: Audio = Audio(config)
17
19
  self.info: Info = Info(config)
18
- self.annotation: Annotation = Annotation(config)
20
+ self.feedback: Feedback = Feedback(config)
@@ -0,0 +1,26 @@
1
+ from pydantic import BaseModel
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+
6
+ class FeedbackInfo(BaseModel):
7
+ """Feedback information."""
8
+
9
+ id: str | None = None
10
+ username: str | None = None
11
+ phone: str | None = None
12
+ avatar: str | None = None
13
+ display_name: str | None = None
14
+ timestamp: int | None = None
15
+ rating: str | None = None
16
+ content: str | None = None
17
+
18
+
19
+ class GetFeedbacksResponse(BaseResponse):
20
+ """Response for get feedbacks API."""
21
+
22
+ data: list[FeedbackInfo] | None = None
23
+ has_more: bool | None = None
24
+ limit: int | None = None
25
+ page: int | None = None
26
+ total: int | None = None
@@ -22,3 +22,7 @@ class GetParametersRequestBuilder:
22
22
 
23
23
  def build(self) -> GetParametersRequest:
24
24
  return self._get_parameters_request
25
+
26
+ def user(self, user: str) -> GetParametersRequestBuilder:
27
+ self._get_parameters_request.add_query("user", user)
28
+ return self
@@ -1,13 +1,17 @@
1
1
  from dify_oapi.core.model.base_response import BaseResponse
2
2
 
3
3
 
4
- class GetParameterResponse(BaseResponse):
4
+ class GetParametersResponse(BaseResponse):
5
+ """Response for get application parameters API."""
6
+
5
7
  opening_statement: str | None = None
6
8
  suggested_questions: list[str] | None = None
7
- suggested_questions_after_answer: dict | None = None
8
9
  speech_to_text: dict | None = None
10
+ text_to_speech: dict | None = None
9
11
  retriever_resource: dict | None = None
10
12
  annotation_reply: dict | None = None
13
+ more_like_this: dict | None = None
11
14
  user_input_form: list[dict] | None = None
15
+ sensitive_word_avoidance: dict | None = None
12
16
  file_upload: dict | None = None
13
17
  system_parameters: dict | None = None
@@ -0,0 +1,17 @@
1
+ from dify_oapi.core.model.base_response import BaseResponse
2
+
3
+
4
+ class GetSiteResponse(BaseResponse):
5
+ """Response for get site settings API."""
6
+
7
+ title: str | None = None
8
+ icon: str | None = None
9
+ icon_background: str | None = None
10
+ description: str | None = None
11
+ default_language: str | None = None
12
+ customize_domain: str | None = None
13
+ customize_token_strategy: str | None = None
14
+ prompt_public: bool | None = None
15
+ copyright: str | None = None
16
+ privacy_policy: str | None = None
17
+ custom_disclaimer: str | None = None
@@ -1,6 +1,8 @@
1
+ from typing import Literal
2
+
1
3
  from pydantic import BaseModel
2
4
 
3
- from .chat_types import Rating
5
+ Rating = Literal["like", "dislike"]
4
6
 
5
7
 
6
8
  class SubmitFeedbackRequestBody(BaseModel):
@@ -2,4 +2,6 @@ from dify_oapi.core.model.base_response import BaseResponse
2
2
 
3
3
 
4
4
  class SubmitFeedbackResponse(BaseResponse):
5
- result: str = "success"
5
+ """Response for submit feedback API."""
6
+
7
+ result: str | None = None
@@ -1,6 +0,0 @@
1
- from .meta import * # noqa 403
2
- from .file import * # noqa 403
3
- from .audio import * # noqa 403
4
- from .parameter import * # noqa 403
5
- from .message import * # noqa 403
6
- from .info import * # noqa 403
@@ -2,6 +2,8 @@ from dify_oapi.core.http.transport import ATransport, Transport
2
2
  from dify_oapi.core.model.config import Config
3
3
  from dify_oapi.core.model.request_option import RequestOption
4
4
 
5
+ from ..model.audio_to_text_request import AudioToTextRequest
6
+ from ..model.audio_to_text_response import AudioToTextResponse
5
7
  from ..model.text_to_audio_request import TextToAudioRequest
6
8
  from ..model.text_to_audio_response import TextToAudioResponse
7
9
 
@@ -10,8 +12,18 @@ class Audio:
10
12
  def __init__(self, config: Config) -> None:
11
13
  self.config: Config = config
12
14
 
15
+ def to_text(self, request: AudioToTextRequest, option: RequestOption | None = None) -> AudioToTextResponse:
16
+ """Convert audio to text (speech-to-text)"""
17
+ return Transport.execute(self.config, request, unmarshal_as=AudioToTextResponse, option=option)
18
+
19
+ async def ato_text(self, request: AudioToTextRequest, option: RequestOption | None = None) -> AudioToTextResponse:
20
+ """Convert audio to text (speech-to-text) - async version"""
21
+ return await ATransport.aexecute(self.config, request, unmarshal_as=AudioToTextResponse, option=option)
22
+
13
23
  def from_text(self, request: TextToAudioRequest, option: RequestOption | None = None) -> TextToAudioResponse:
24
+ """Convert text to audio (text-to-speech)"""
14
25
  return Transport.execute(self.config, request, unmarshal_as=TextToAudioResponse, option=option)
15
26
 
16
27
  async def afrom_text(self, request: TextToAudioRequest, option: RequestOption | None = None) -> TextToAudioResponse:
28
+ """Convert text to audio (text-to-speech) - async version"""
17
29
  return await ATransport.aexecute(self.config, request, unmarshal_as=TextToAudioResponse, option=option)
@@ -9,23 +9,23 @@ from ..model.submit_feedback_response import SubmitFeedbackResponse
9
9
 
10
10
 
11
11
  class Feedback:
12
- def __init__(self, config: Config):
13
- self.config = config
12
+ def __init__(self, config: Config) -> None:
13
+ self.config: Config = config
14
14
 
15
15
  def submit(self, request: SubmitFeedbackRequest, option: RequestOption | None = None) -> SubmitFeedbackResponse:
16
- """Submit feedback for a message."""
16
+ """Submit feedback for a message"""
17
17
  return Transport.execute(self.config, request, unmarshal_as=SubmitFeedbackResponse, option=option)
18
18
 
19
19
  async def asubmit(
20
20
  self, request: SubmitFeedbackRequest, option: RequestOption | None = None
21
21
  ) -> SubmitFeedbackResponse:
22
- """Submit feedback for a message asynchronously."""
22
+ """Submit feedback for a message - async version"""
23
23
  return await ATransport.aexecute(self.config, request, unmarshal_as=SubmitFeedbackResponse, option=option)
24
24
 
25
25
  def list(self, request: GetFeedbacksRequest, option: RequestOption | None = None) -> GetFeedbacksResponse:
26
- """Get application feedbacks."""
26
+ """Get list of feedbacks"""
27
27
  return Transport.execute(self.config, request, unmarshal_as=GetFeedbacksResponse, option=option)
28
28
 
29
29
  async def alist(self, request: GetFeedbacksRequest, option: RequestOption | None = None) -> GetFeedbacksResponse:
30
- """Get application feedbacks asynchronously."""
30
+ """Get list of feedbacks - async version"""
31
31
  return await ATransport.aexecute(self.config, request, unmarshal_as=GetFeedbacksResponse, option=option)
@@ -4,6 +4,12 @@ from dify_oapi.core.model.request_option import RequestOption
4
4
 
5
5
  from ..model.get_info_request import GetInfoRequest
6
6
  from ..model.get_info_response import GetInfoResponse
7
+ from ..model.get_meta_request import GetMetaRequest
8
+ from ..model.get_meta_response import GetMetaResponse
9
+ from ..model.get_parameters_request import GetParametersRequest
10
+ from ..model.get_parameters_response import GetParametersResponse
11
+ from ..model.get_site_request import GetSiteRequest
12
+ from ..model.get_site_response import GetSiteResponse
7
13
 
8
14
 
9
15
  class Info:
@@ -11,9 +17,35 @@ class Info:
11
17
  self.config: Config = config
12
18
 
13
19
  def get(self, request: GetInfoRequest, option: RequestOption | None = None) -> GetInfoResponse:
14
- # Send request
20
+ """Get application information"""
15
21
  return Transport.execute(self.config, request, unmarshal_as=GetInfoResponse, option=option)
16
22
 
17
23
  async def aget(self, request: GetInfoRequest, option: RequestOption | None = None) -> GetInfoResponse:
18
- # Send request
24
+ """Get application information - async version"""
19
25
  return await ATransport.aexecute(self.config, request, unmarshal_as=GetInfoResponse, option=option)
26
+
27
+ def parameters(self, request: GetParametersRequest, option: RequestOption | None = None) -> GetParametersResponse:
28
+ """Get application parameters"""
29
+ return Transport.execute(self.config, request, unmarshal_as=GetParametersResponse, option=option)
30
+
31
+ async def aparameters(
32
+ self, request: GetParametersRequest, option: RequestOption | None = None
33
+ ) -> GetParametersResponse:
34
+ """Get application parameters - async version"""
35
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetParametersResponse, option=option)
36
+
37
+ def meta(self, request: GetMetaRequest, option: RequestOption | None = None) -> GetMetaResponse:
38
+ """Get application metadata"""
39
+ return Transport.execute(self.config, request, unmarshal_as=GetMetaResponse, option=option)
40
+
41
+ async def ameta(self, request: GetMetaRequest, option: RequestOption | None = None) -> GetMetaResponse:
42
+ """Get application metadata - async version"""
43
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetMetaResponse, option=option)
44
+
45
+ def site(self, request: GetSiteRequest, option: RequestOption | None = None) -> GetSiteResponse:
46
+ """Get site settings"""
47
+ return Transport.execute(self.config, request, unmarshal_as=GetSiteResponse, option=option)
48
+
49
+ async def asite(self, request: GetSiteRequest, option: RequestOption | None = None) -> GetSiteResponse:
50
+ """Get site settings - async version"""
51
+ return await ATransport.aexecute(self.config, request, unmarshal_as=GetSiteResponse, option=option)
@@ -1,13 +1,14 @@
1
1
  from dify_oapi.core.model.config import Config
2
2
 
3
- from .resource import Audio, File, Info, Message, Meta, Parameter
3
+ from .resource.audio import Audio
4
+ from .resource.feedback import Feedback
5
+ from .resource.file import File
6
+ from .resource.info import Info
4
7
 
5
8
 
6
9
  class V1:
7
10
  def __init__(self, config: Config):
8
- self.meta: Meta = Meta(config)
9
11
  self.file: File = File(config)
10
12
  self.audio: Audio = Audio(config)
11
- self.parameter: Parameter = Parameter(config)
12
- self.message: Message = Message(config)
13
13
  self.info: Info = Info(config)
14
+ self.feedback: Feedback = Feedback(config)
@@ -3,6 +3,6 @@ from dify_oapi.core.model.config import Config
3
3
  from .v1.version import V1
4
4
 
5
5
 
6
- class Knowledge:
7
- def __init__(self, config: Config):
8
- self.v1 = V1(config)
6
+ class KnowledgeService:
7
+ def __init__(self, config: Config) -> None:
8
+ self.v1: V1 = V1(config)
@@ -2,7 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import json
6
5
  from io import BytesIO
7
6
 
8
7
  from dify_oapi.core.enum import HttpMethod
@@ -44,8 +43,7 @@ class CreateDocumentByFileRequestBuilder:
44
43
 
45
44
  def request_body(self, request_body: CreateDocumentByFileRequestBody) -> CreateDocumentByFileRequestBuilder:
46
45
  self._create_document_by_file_request.request_body = request_body
47
- data_dict = request_body.model_dump(exclude_none=True, mode="json")
48
- self._create_document_by_file_request.body = {"data": json.dumps(data_dict)}
46
+ self._create_document_by_file_request.body = request_body.model_dump(exclude_none=True, mode="json")
49
47
  return self
50
48
 
51
49
  def file(self, file: BytesIO, file_name: str | None = None) -> CreateDocumentByFileRequestBuilder:
@@ -4,23 +4,13 @@ from __future__ import annotations
4
4
 
5
5
  from pydantic import BaseModel
6
6
 
7
- from .knowledge_types import DocumentForm, IndexingTechnique
8
- from .process_rule import ProcessRule
9
- from .retrieval_model import RetrievalModel
7
+ from .create_document_by_file_request_body_data import CreateDocumentByFileRequestBodyData
10
8
 
11
9
 
12
10
  class CreateDocumentByFileRequestBody(BaseModel):
13
11
  """Request body model for create document by file API."""
14
12
 
15
- name: str | None = None
16
- original_document_id: str | None = None # UUID for re-upload/modify
17
- indexing_technique: IndexingTechnique | None = None
18
- doc_form: DocumentForm | None = None
19
- doc_language: str | None = None
20
- process_rule: ProcessRule | None = None
21
- retrieval_model: RetrievalModel | None = None
22
- embedding_model: str | None = None
23
- embedding_model_provider: str | None = None
13
+ data: str | None = None
24
14
 
25
15
  @staticmethod
26
16
  def builder() -> CreateDocumentByFileRequestBodyBuilder:
@@ -36,38 +26,6 @@ class CreateDocumentByFileRequestBodyBuilder:
36
26
  def build(self) -> CreateDocumentByFileRequestBody:
37
27
  return self._create_document_by_file_request_body
38
28
 
39
- def name(self, name: str) -> CreateDocumentByFileRequestBodyBuilder:
40
- self._create_document_by_file_request_body.name = name
41
- return self
42
-
43
- def indexing_technique(self, indexing_technique: IndexingTechnique) -> CreateDocumentByFileRequestBodyBuilder:
44
- self._create_document_by_file_request_body.indexing_technique = indexing_technique
45
- return self
46
-
47
- def process_rule(self, process_rule: ProcessRule) -> CreateDocumentByFileRequestBodyBuilder:
48
- self._create_document_by_file_request_body.process_rule = process_rule
49
- return self
50
-
51
- def original_document_id(self, original_document_id: str) -> CreateDocumentByFileRequestBodyBuilder:
52
- self._create_document_by_file_request_body.original_document_id = original_document_id
53
- return self
54
-
55
- def doc_form(self, doc_form: DocumentForm) -> CreateDocumentByFileRequestBodyBuilder:
56
- self._create_document_by_file_request_body.doc_form = doc_form
57
- return self
58
-
59
- def doc_language(self, doc_language: str) -> CreateDocumentByFileRequestBodyBuilder:
60
- self._create_document_by_file_request_body.doc_language = doc_language
61
- return self
62
-
63
- def retrieval_model(self, retrieval_model: RetrievalModel) -> CreateDocumentByFileRequestBodyBuilder:
64
- self._create_document_by_file_request_body.retrieval_model = retrieval_model
65
- return self
66
-
67
- def embedding_model(self, embedding_model: str) -> CreateDocumentByFileRequestBodyBuilder:
68
- self._create_document_by_file_request_body.embedding_model = embedding_model
69
- return self
70
-
71
- def embedding_model_provider(self, embedding_model_provider: str) -> CreateDocumentByFileRequestBodyBuilder:
72
- self._create_document_by_file_request_body.embedding_model_provider = embedding_model_provider
29
+ def data(self, data: CreateDocumentByFileRequestBodyData) -> CreateDocumentByFileRequestBodyBuilder:
30
+ self._create_document_by_file_request_body.data = data.model_dump_json(exclude_none=True)
73
31
  return self
@@ -0,0 +1,73 @@
1
+ """Create document by file request body model."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .knowledge_types import DocumentForm, IndexingTechnique
8
+ from .process_rule import ProcessRule
9
+ from .retrieval_model import RetrievalModel
10
+
11
+
12
+ class CreateDocumentByFileRequestBodyData(BaseModel):
13
+ """Request body model for create document by file API."""
14
+
15
+ name: str | None = None
16
+ original_document_id: str | None = None # UUID for re-upload/modify
17
+ indexing_technique: IndexingTechnique | None = None
18
+ doc_form: DocumentForm | None = None
19
+ doc_language: str | None = None
20
+ process_rule: ProcessRule | None = None
21
+ retrieval_model: RetrievalModel | None = None
22
+ embedding_model: str | None = None
23
+ embedding_model_provider: str | None = None
24
+
25
+ @staticmethod
26
+ def builder() -> CreateDocumentByFileRequestBodyDataBuilder:
27
+ return CreateDocumentByFileRequestBodyDataBuilder()
28
+
29
+
30
+ class CreateDocumentByFileRequestBodyDataBuilder:
31
+ """Builder for CreateDocumentByFileRequestBodyData."""
32
+
33
+ def __init__(self) -> None:
34
+ self._create_document_by_file_request_body = CreateDocumentByFileRequestBodyData()
35
+
36
+ def build(self) -> CreateDocumentByFileRequestBodyData:
37
+ return self._create_document_by_file_request_body
38
+
39
+ def name(self, name: str) -> CreateDocumentByFileRequestBodyDataBuilder:
40
+ self._create_document_by_file_request_body.name = name
41
+ return self
42
+
43
+ def indexing_technique(self, indexing_technique: IndexingTechnique) -> CreateDocumentByFileRequestBodyDataBuilder:
44
+ self._create_document_by_file_request_body.indexing_technique = indexing_technique
45
+ return self
46
+
47
+ def process_rule(self, process_rule: ProcessRule) -> CreateDocumentByFileRequestBodyDataBuilder:
48
+ self._create_document_by_file_request_body.process_rule = process_rule
49
+ return self
50
+
51
+ def original_document_id(self, original_document_id: str) -> CreateDocumentByFileRequestBodyDataBuilder:
52
+ self._create_document_by_file_request_body.original_document_id = original_document_id
53
+ return self
54
+
55
+ def doc_form(self, doc_form: DocumentForm) -> CreateDocumentByFileRequestBodyDataBuilder:
56
+ self._create_document_by_file_request_body.doc_form = doc_form
57
+ return self
58
+
59
+ def doc_language(self, doc_language: str) -> CreateDocumentByFileRequestBodyDataBuilder:
60
+ self._create_document_by_file_request_body.doc_language = doc_language
61
+ return self
62
+
63
+ def retrieval_model(self, retrieval_model: RetrievalModel) -> CreateDocumentByFileRequestBodyDataBuilder:
64
+ self._create_document_by_file_request_body.retrieval_model = retrieval_model
65
+ return self
66
+
67
+ def embedding_model(self, embedding_model: str) -> CreateDocumentByFileRequestBodyDataBuilder:
68
+ self._create_document_by_file_request_body.embedding_model = embedding_model
69
+ return self
70
+
71
+ def embedding_model_provider(self, embedding_model_provider: str) -> CreateDocumentByFileRequestBodyDataBuilder:
72
+ self._create_document_by_file_request_body.embedding_model_provider = embedding_model_provider
73
+ return self