@@ -255,6 +255,32 @@ def get_file_preview(self, file_id: str):
255255 """Get file preview by file ID."""
256256 return self ._send_request ("GET" , f"/files/{ file_id } /preview" )
257257
258+ def get_app_feedbacks (self , page : int = 1 , limit : int = 20 ):
259+ """Get message feedbacks for the application.
260+
261+ Args:
262+ page: Page number (default: 1)
263+ limit: Number of items per page (default: 20)
264+
265+ Returns:
266+ httpx.Response object
267+ """
268+ self ._validate_params (page = page , limit = limit )
269+ params = {"page" : page , "limit" : limit }
270+ return self ._send_request ("GET" , "/app/feedbacks" , params = params )
271+
272+ def get_end_user_info (self , end_user_id : str ):
273+ """Get end user information.
274+
275+ Args:
276+ end_user_id: End user ID
277+
278+ Returns:
279+ httpx.Response object
280+ """
281+ self ._validate_params (end_user_id = end_user_id )
282+ return self ._send_request ("GET" , f"/end-users/{ end_user_id } " )
283+
258284 # App Configuration APIs
259285 def get_app_site_config (self , app_id : str ):
260286 """Get app site configuration.
@@ -353,6 +379,20 @@ def create_completion_message(
353379 stream = (response_mode == "streaming" ),
354380 )
355381
382+ def stop_completion_message (self , task_id : str , user : str ):
383+ """Stop a running completion message generation.
384+
385+ Args:
386+ task_id: Task ID from the completion message response
387+ user: User identifier (must match the one used in the original request)
388+
389+ Returns:
390+ httpx.Response object
391+ """
392+ self ._validate_params (task_id = task_id , user = user )
393+ data = {"user" : user }
394+ return self ._send_request ("POST" , f"/completion-messages/{ task_id } /stop" , data )
395+
356396
357397class ChatClient (DifyClient ):
358398 def create_chat_message (
0 commit comments