dify/api/services/rag_pipeline/entity/pipeline_service_api_entities.py
Stephen Zhou c52eafe2ca
docs: enrich generated service API descriptions (#37615)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-06-18 08:43:39 +00:00

143 lines
6.2 KiB
Python

from collections.abc import Mapping
from typing import Annotated, Any
from pydantic import BaseModel, Field, WithJsonSchema
DatasourceType = Annotated[
str,
WithJsonSchema({"enum": ["local_file", "online_document", "website_crawl", "online_drive"], "type": "string"}),
]
PipelineResponseMode = Annotated[
str,
WithJsonSchema({"enum": ["streaming", "blocking"], "type": "string"}),
]
DatasourceInfoList = Annotated[
list[Mapping[str, Any]],
WithJsonSchema(
{
"items": {
"oneOf": [
{
"properties": {
"reference": {
"description": (
"Use the `id` returned by the "
"[Upload Pipeline File](/api-reference/knowledge-pipeline/upload-pipeline-file) "
"endpoint. `related_id` is accepted as an alias."
),
"type": "string",
},
"name": {"description": "Document title. Defaults to `untitled`.", "type": "string"},
},
"required": ["reference"],
"title": "Local File",
"type": "object",
},
{
"properties": {
"workspace_id": {
"description": "ID of the workspace or database in the external platform.",
"type": "string",
},
"page": {
"description": "Page details.",
"properties": {
"page_id": {"description": "Page identifier.", "type": "string"},
"type": {
"description": "Page type defined by the datasource plugin.",
"type": "string",
},
"page_name": {
"description": "Display name. Defaults to `untitled`.",
"type": "string",
},
},
"required": ["page_id", "type"],
"type": "object",
},
"credential_id": {
"description": (
"Credential for authenticating with the external platform. If omitted, the "
"provider's default credential is used."
),
"type": "string",
},
},
"required": ["workspace_id", "page"],
"title": "Online Document",
"type": "object",
},
{
"properties": {
"url": {"description": "URL to crawl.", "type": "string"},
"title": {
"description": "Used as the document name. Defaults to `untitled`.",
"type": "string",
},
},
"required": ["url"],
"title": "Website Crawl",
"type": "object",
},
{
"properties": {
"id": {"description": "File or folder ID.", "type": "string"},
"type": {
"description": "Whether this entry is a single file or a folder to expand.",
"enum": ["file", "folder"],
"type": "string",
},
"bucket": {
"description": (
"Storage bucket name. Required by some drive providers, such as S3-compatible "
"stores; omit if the provider does not use buckets."
),
"type": "string",
},
"name": {"description": "File name. Defaults to `untitled`.", "type": "string"},
},
"required": ["id", "type"],
"title": "Online Drive",
"type": "object",
},
]
},
"type": "array",
}
),
]
class DatasourceNodeRunApiEntity(BaseModel):
pipeline_id: str
node_id: str
inputs: dict[str, Any]
datasource_type: DatasourceType
credential_id: str | None = None
is_published: bool
class PipelineRunApiEntity(BaseModel):
inputs: Mapping[str, Any] = Field(
description=(
"Key-value pairs for pipeline input variables defined in the workflow. Pass `{}` if the pipeline has "
"no input variables."
)
)
datasource_type: DatasourceType = Field(
description="Type of the datasource. Determines which fields are expected in `datasource_info_list` items."
)
datasource_info_list: DatasourceInfoList = Field(
description="List of datasource objects to process. The expected item structure depends on `datasource_type`."
)
start_node_id: str = Field(description="ID of the datasource node where the run starts.")
is_published: bool = Field(
description=(
"Whether to run the published or draft version of the pipeline. `true` runs the latest published "
"version; `false` runs the current draft (useful for testing unpublished changes)."
)
)
response_mode: PipelineResponseMode = Field(
description="Response mode. Use `streaming` for SSE or `blocking` for JSON."
)