mirror of
https://github.com/langgenius/dify-plugin-sdks.git
synced 2026-07-22 02:15:22 -04:00
165 lines
4.8 KiB
Python
165 lines
4.8 KiB
Python
from collections.abc import Mapping
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from dify_plugin.entities.invoke_message import InvokeMessage
|
|
|
|
#########################
|
|
# Data source common message
|
|
#########################
|
|
|
|
|
|
class DatasourceMessage(InvokeMessage):
|
|
pass
|
|
|
|
|
|
#########################
|
|
# Online document
|
|
#########################
|
|
|
|
|
|
class DatasourceRuntime(BaseModel):
|
|
credentials: Mapping[str, Any]
|
|
user_id: str | None
|
|
session_id: str | None
|
|
|
|
|
|
class WebSiteInfoDetail(BaseModel):
|
|
source_url: str = Field(..., description="The url of the website")
|
|
content: str = Field(..., description="The content of the website")
|
|
title: str = Field(..., description="The title of the website")
|
|
description: str = Field(..., description="The description of the website")
|
|
|
|
|
|
class WebSiteInfo(BaseModel):
|
|
"""
|
|
Website info
|
|
"""
|
|
|
|
status: str | None = Field(..., description="crawl job status")
|
|
web_info_list: list[WebSiteInfoDetail] | None = []
|
|
total: int | None = Field(default=0, description="The total number of websites")
|
|
completed: int | None = Field(default=0, description="The number of completed websites")
|
|
|
|
|
|
class WebsiteCrawlMessage(BaseModel):
|
|
"""
|
|
Get website crawl response
|
|
"""
|
|
|
|
result: WebSiteInfo
|
|
|
|
|
|
class OnlineDocumentPage(BaseModel):
|
|
"""
|
|
Online document page
|
|
"""
|
|
|
|
page_id: str = Field(..., description="The page id")
|
|
page_name: str = Field(..., description="The page name")
|
|
page_icon: dict | None = Field(None, description="The page icon")
|
|
type: str = Field(..., description="The type of the page")
|
|
last_edited_time: str = Field(..., description="The last edited time")
|
|
parent_id: str | None = Field(None, description="The parent page id")
|
|
|
|
|
|
class OnlineDocumentInfo(BaseModel):
|
|
"""
|
|
Online document info
|
|
"""
|
|
|
|
workspace_id: str = Field(..., description="The workspace id")
|
|
workspace_name: str = Field(..., description="The workspace name")
|
|
workspace_icon: str = Field(..., description="The workspace icon")
|
|
total: int = Field(..., description="The total number of documents")
|
|
pages: list[OnlineDocumentPage] = Field(..., description="The pages of the online document")
|
|
|
|
|
|
class DatasourceGetPagesResponse(BaseModel):
|
|
"""
|
|
Get online document pages response
|
|
"""
|
|
|
|
result: list[OnlineDocumentInfo] = Field(..., description="The pages of the online document")
|
|
|
|
|
|
class GetOnlineDocumentPageContentRequest(BaseModel):
|
|
"""
|
|
Get online document page content request
|
|
"""
|
|
|
|
workspace_id: str = Field(..., description="The workspace id")
|
|
page_id: str = Field(..., description="The page id")
|
|
type: str = Field(..., description="The type of the page")
|
|
|
|
|
|
#########################
|
|
# Online drive file
|
|
#########################
|
|
|
|
|
|
class OnlineDriveFile(BaseModel):
|
|
"""
|
|
Online drive file
|
|
"""
|
|
|
|
id: str = Field(..., description="File ID")
|
|
name: str = Field(..., description="File name")
|
|
size: int = Field(..., description="File size")
|
|
type: str = Field(..., description="File type (folder/file)")
|
|
|
|
|
|
class OnlineDriveFileBucket(BaseModel):
|
|
"""
|
|
Online drive file bucket
|
|
"""
|
|
|
|
bucket: str | None = Field(None, description="File bucket")
|
|
files: list[OnlineDriveFile] = Field(..., description="File contents")
|
|
is_truncated: bool = Field(..., description="Whether the result is truncated")
|
|
next_page_parameters: dict | None = Field(None, description="Parameters for fetching the next page")
|
|
|
|
|
|
class OnlineDriveBrowseFilesRequest(BaseModel):
|
|
"""
|
|
Get online drive file list request
|
|
"""
|
|
|
|
bucket: str | None = Field(None, description="File bucket")
|
|
prefix: str | None = Field(..., description="Parent ID")
|
|
max_keys: int = Field(20, description="Page size")
|
|
next_page_parameters: dict | None = Field(None, description="Parameters for fetching the next page")
|
|
|
|
|
|
class OnlineDriveBrowseFilesResponse(BaseModel):
|
|
"""
|
|
Get online drive file list response
|
|
"""
|
|
|
|
result: list[OnlineDriveFileBucket] = Field(..., description="File list")
|
|
|
|
|
|
class OnlineDriveDownloadFileRequest(BaseModel):
|
|
"""
|
|
Get online drive file
|
|
"""
|
|
|
|
bucket: str | None = Field(None, description="File bucket")
|
|
id: str = Field(..., description="File ID")
|
|
|
|
|
|
class DatasourceOAuthCredentials(BaseModel):
|
|
"""
|
|
DatasourceOAuth credentials
|
|
"""
|
|
|
|
name: str | None = Field(None, description="The name of the OAuth credential")
|
|
avatar_url: str | None = Field(None, description="The avatar url of the OAuth")
|
|
credentials: Mapping[str, Any] = Field(..., description="The credentials of the OAuth")
|
|
expires_at: int | None = Field(
|
|
default=-1,
|
|
description="""The expiration timestamp (in seconds since Unix epoch, UTC) of the credentials.
|
|
Set to -1 or None if the credentials do not expire.""",
|
|
)
|