mirror of
https://github.com/langgenius/dify.git
synced 2026-03-25 14:01:06 -04:00
1643 lines
53 KiB
YAML
1643 lines
53 KiB
YAML
openapi: 3.0.3
|
||
info:
|
||
title: Dify Console API
|
||
description: API documentation for Dify Console – Datasets, Snippets, Snippet Workflows, and Evaluation modules.
|
||
version: 1.0.0
|
||
|
||
servers:
|
||
- url: /console/api
|
||
|
||
tags:
|
||
- name: Datasets
|
||
description: Knowledge base (dataset) CRUD and ancillary operations
|
||
- name: Dataset Evaluation
|
||
description: Knowledge base retrieval evaluation
|
||
- name: Snippets
|
||
description: Customized snippet CRUD, import/export, and dependency checks
|
||
- name: Snippet Workflows
|
||
description: Snippet draft/published workflow operations, node runs, and workflow runs
|
||
- name: Evaluation
|
||
description: Evaluation configuration, runs, metrics, and node info for App / Snippet targets
|
||
|
||
# ============================================================
|
||
# Paths
|
||
# ============================================================
|
||
paths:
|
||
|
||
# ----------------------------------------------------------
|
||
# Datasets
|
||
# ----------------------------------------------------------
|
||
|
||
/datasets:
|
||
get:
|
||
tags: [Datasets]
|
||
summary: List datasets
|
||
operationId: get_datasets
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- $ref: '#/components/parameters/LimitParam'
|
||
- name: keyword
|
||
in: query
|
||
schema: { type: string }
|
||
- name: include_all
|
||
in: query
|
||
schema: { type: boolean, default: false }
|
||
- name: ids
|
||
in: query
|
||
schema: { type: array, items: { type: string } }
|
||
- name: tag_ids
|
||
in: query
|
||
schema: { type: array, items: { type: string } }
|
||
responses:
|
||
'200':
|
||
description: Datasets retrieved successfully
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/DatasetDetail' } }
|
||
page: { type: integer }
|
||
limit: { type: integer }
|
||
total: { type: integer }
|
||
has_more: { type: boolean }
|
||
post:
|
||
tags: [Datasets]
|
||
summary: Create a dataset
|
||
operationId: create_dataset
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/DatasetCreatePayload' }
|
||
responses:
|
||
'201':
|
||
description: Dataset created successfully
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/DatasetDetail' }
|
||
'400':
|
||
$ref: '#/components/responses/BadRequest'
|
||
|
||
/datasets/{dataset_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset details
|
||
operationId: get_dataset
|
||
responses:
|
||
'200':
|
||
description: Dataset retrieved successfully
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/DatasetDetail' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
patch:
|
||
tags: [Datasets]
|
||
summary: Update dataset
|
||
operationId: update_dataset
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/DatasetUpdatePayload' }
|
||
responses:
|
||
'200':
|
||
description: Dataset updated successfully
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/DatasetDetail' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
delete:
|
||
tags: [Datasets]
|
||
summary: Delete dataset
|
||
operationId: delete_dataset
|
||
responses:
|
||
'204': { description: Dataset deleted successfully }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/use-check:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Check if dataset is in use
|
||
operationId: check_dataset_use
|
||
responses:
|
||
'200':
|
||
description: Dataset use status
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
is_using: { type: boolean }
|
||
|
||
/datasets/{dataset_id}/queries:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset query history
|
||
operationId: get_dataset_queries
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- $ref: '#/components/parameters/LimitParam'
|
||
responses:
|
||
'200':
|
||
description: Query history retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { type: object } }
|
||
page: { type: integer }
|
||
limit: { type: integer }
|
||
total: { type: integer }
|
||
has_more: { type: boolean }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/indexing-estimate:
|
||
post:
|
||
tags: [Datasets]
|
||
summary: Estimate dataset indexing cost
|
||
operationId: estimate_dataset_indexing
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/IndexingEstimatePayload' }
|
||
responses:
|
||
'200': { description: Indexing estimate calculated }
|
||
|
||
/datasets/{dataset_id}/related-apps:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get applications related to dataset
|
||
operationId: get_dataset_related_apps
|
||
responses:
|
||
'200':
|
||
description: Related apps retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { type: object } }
|
||
total: { type: integer }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/indexing-status:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset indexing status
|
||
operationId: get_dataset_indexing_status
|
||
responses:
|
||
'200':
|
||
description: Indexing status retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { type: object } }
|
||
|
||
/datasets/api-keys:
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset API keys
|
||
operationId: get_dataset_api_keys
|
||
responses:
|
||
'200':
|
||
description: API keys retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
items: { type: array, items: { $ref: '#/components/schemas/ApiKeyItem' } }
|
||
post:
|
||
tags: [Datasets]
|
||
summary: Create dataset API key
|
||
operationId: create_dataset_api_key
|
||
responses:
|
||
'200':
|
||
description: API key created
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/ApiKeyItem' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
|
||
/datasets/api-keys/{api_key_id}:
|
||
parameters:
|
||
- name: api_key_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
delete:
|
||
tags: [Datasets]
|
||
summary: Delete dataset API key
|
||
operationId: delete_dataset_api_key
|
||
responses:
|
||
'204': { description: API key deleted }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/api-keys/{status}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
- name: status
|
||
in: path
|
||
required: true
|
||
schema: { type: string, enum: [enable, disable] }
|
||
post:
|
||
tags: [Datasets]
|
||
summary: Enable or disable dataset API
|
||
operationId: toggle_dataset_api
|
||
responses:
|
||
'200': { description: Status updated }
|
||
|
||
/datasets/api-base-info:
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset API base URL
|
||
operationId: get_dataset_api_base_info
|
||
responses:
|
||
'200':
|
||
description: API base info
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
api_base_url: { type: string }
|
||
|
||
/datasets/retrieval-setting:
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset retrieval settings
|
||
operationId: get_dataset_retrieval_setting
|
||
responses:
|
||
'200':
|
||
description: Retrieval settings
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
retrieval_method: { type: array, items: { type: string } }
|
||
|
||
/datasets/retrieval-setting/{vector_type}:
|
||
parameters:
|
||
- name: vector_type
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get mock retrieval settings by vector type
|
||
operationId: get_dataset_retrieval_setting_mock
|
||
responses:
|
||
'200':
|
||
description: Mock retrieval settings
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
retrieval_method: { type: array, items: { type: string } }
|
||
|
||
/datasets/{dataset_id}/error-docs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset error documents
|
||
operationId: get_dataset_error_docs
|
||
responses:
|
||
'200':
|
||
description: Error documents retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { type: object } }
|
||
total: { type: integer }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/permission-part-users:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset permission user list
|
||
operationId: get_dataset_permission_users
|
||
responses:
|
||
'200':
|
||
description: Permission users retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { type: object } }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/auto-disable-logs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Datasets]
|
||
summary: Get dataset auto-disable logs
|
||
operationId: get_dataset_auto_disable_logs
|
||
responses:
|
||
'200': { description: Auto-disable logs retrieved }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
# ----------------------------------------------------------
|
||
# Dataset Evaluation
|
||
# ----------------------------------------------------------
|
||
|
||
/datasets/{dataset_id}/evaluation/template/download:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
post:
|
||
tags: [Dataset Evaluation]
|
||
summary: Download evaluation dataset template for knowledge base
|
||
operationId: download_dataset_evaluation_template
|
||
responses:
|
||
'200':
|
||
description: XLSX template streamed as attachment
|
||
content:
|
||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: {}
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Dataset Evaluation]
|
||
summary: Get evaluation configuration for knowledge base
|
||
operationId: get_dataset_evaluation_config
|
||
responses:
|
||
'200':
|
||
description: Evaluation configuration retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfig' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
put:
|
||
tags: [Dataset Evaluation]
|
||
summary: Save evaluation configuration for knowledge base
|
||
operationId: save_dataset_evaluation_config
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfigData' }
|
||
responses:
|
||
'200':
|
||
description: Configuration saved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfig' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
post:
|
||
tags: [Dataset Evaluation]
|
||
summary: Start evaluation run for knowledge base
|
||
operationId: start_dataset_evaluation_run
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRunRequest' }
|
||
responses:
|
||
'200':
|
||
description: Evaluation run started
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRun' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
'429': { description: Max concurrent runs reached }
|
||
|
||
/datasets/{dataset_id}/evaluation/logs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Dataset Evaluation]
|
||
summary: Get evaluation run history for knowledge base
|
||
operationId: get_dataset_evaluation_logs
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- name: page_size
|
||
in: query
|
||
schema: { type: integer, default: 20 }
|
||
responses:
|
||
'200':
|
||
description: Evaluation logs retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/EvaluationRun' } }
|
||
total: { type: integer }
|
||
page: { type: integer }
|
||
page_size: { type: integer }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation/runs/{run_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
get:
|
||
tags: [Dataset Evaluation]
|
||
summary: Get evaluation run detail for knowledge base
|
||
operationId: get_dataset_evaluation_run_detail
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- name: page_size
|
||
in: query
|
||
schema: { type: integer, default: 50 }
|
||
responses:
|
||
'200':
|
||
description: Run detail with items
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
run: { $ref: '#/components/schemas/EvaluationRun' }
|
||
items:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/EvaluationRunItem' } }
|
||
total: { type: integer }
|
||
page: { type: integer }
|
||
page_size: { type: integer }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation/runs/{run_id}/cancel:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
post:
|
||
tags: [Dataset Evaluation]
|
||
summary: Cancel a running knowledge base evaluation
|
||
operationId: cancel_dataset_evaluation_run
|
||
responses:
|
||
'200':
|
||
description: Evaluation run cancelled
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRun' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation/metrics:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
get:
|
||
tags: [Dataset Evaluation]
|
||
summary: Get available retrieval evaluation metrics
|
||
operationId: get_dataset_evaluation_metrics
|
||
responses:
|
||
'200':
|
||
description: Metrics retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
metrics: { type: array, items: { type: string } }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/datasets/{dataset_id}/evaluation/files/{file_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/DatasetId'
|
||
- name: file_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
get:
|
||
tags: [Dataset Evaluation]
|
||
summary: Download evaluation file for knowledge base
|
||
operationId: download_dataset_evaluation_file
|
||
responses:
|
||
'200':
|
||
description: File info and download URL
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/FileInfo' }
|
||
'403': { $ref: '#/components/responses/Forbidden' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
# ----------------------------------------------------------
|
||
# Snippets
|
||
# ----------------------------------------------------------
|
||
|
||
/workspaces/current/customized-snippets:
|
||
get:
|
||
tags: [Snippets]
|
||
summary: List customized snippets
|
||
operationId: list_customized_snippets
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- $ref: '#/components/parameters/LimitParam'
|
||
- name: keyword
|
||
in: query
|
||
schema: { type: string }
|
||
- name: is_published
|
||
in: query
|
||
schema: { type: boolean }
|
||
responses:
|
||
'200':
|
||
description: Snippets retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/SnippetListItem' } }
|
||
page: { type: integer }
|
||
limit: { type: integer }
|
||
total: { type: integer }
|
||
has_more: { type: boolean }
|
||
post:
|
||
tags: [Snippets]
|
||
summary: Create a customized snippet
|
||
operationId: create_customized_snippet
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/CreateSnippetPayload' }
|
||
responses:
|
||
'201':
|
||
description: Snippet created
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/Snippet' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
|
||
/workspaces/current/customized-snippets/{snippet_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippets]
|
||
summary: Get snippet details
|
||
operationId: get_customized_snippet
|
||
responses:
|
||
'200':
|
||
description: Snippet retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/Snippet' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
patch:
|
||
tags: [Snippets]
|
||
summary: Update snippet
|
||
operationId: update_customized_snippet
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/UpdateSnippetPayload' }
|
||
responses:
|
||
'200':
|
||
description: Snippet updated
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/Snippet' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
delete:
|
||
tags: [Snippets]
|
||
summary: Delete snippet
|
||
operationId: delete_customized_snippet
|
||
responses:
|
||
'204': { description: Snippet deleted }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/workspaces/current/customized-snippets/{snippet_id}/export:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippets]
|
||
summary: Export snippet as DSL (YAML)
|
||
operationId: export_customized_snippet
|
||
parameters:
|
||
- name: include_secret
|
||
in: query
|
||
schema: { type: string, enum: ['true', 'false'], default: 'false' }
|
||
responses:
|
||
'200':
|
||
description: Snippet DSL exported
|
||
content:
|
||
application/x-yaml: {}
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/workspaces/current/customized-snippets/imports:
|
||
post:
|
||
tags: [Snippets]
|
||
summary: Import snippet from DSL
|
||
operationId: import_customized_snippet
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetImportPayload' }
|
||
responses:
|
||
'200': { description: Import succeeded }
|
||
'202': { description: Import pending confirmation }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
|
||
/workspaces/current/customized-snippets/imports/{import_id}/confirm:
|
||
parameters:
|
||
- name: import_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
post:
|
||
tags: [Snippets]
|
||
summary: Confirm a pending snippet import
|
||
operationId: confirm_snippet_import
|
||
responses:
|
||
'200': { description: Import confirmed }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
|
||
/workspaces/current/customized-snippets/{snippet_id}/check-dependencies:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippets]
|
||
summary: Check snippet dependencies
|
||
operationId: check_snippet_dependencies
|
||
responses:
|
||
'200': { description: Dependencies checked }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/workspaces/current/customized-snippets/{snippet_id}/use-count/increment:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
post:
|
||
tags: [Snippets]
|
||
summary: Increment snippet use count
|
||
operationId: increment_snippet_use_count
|
||
responses:
|
||
'200':
|
||
description: Use count incremented
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
result: { type: string }
|
||
use_count: { type: integer }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
# ----------------------------------------------------------
|
||
# Snippet Workflows
|
||
# ----------------------------------------------------------
|
||
|
||
/snippets/{snippet_id}/workflows/draft:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get draft workflow for snippet
|
||
operationId: get_snippet_draft_workflow
|
||
responses:
|
||
'200':
|
||
description: Draft workflow retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/Workflow' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Sync draft workflow
|
||
operationId: sync_snippet_draft_workflow
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetDraftSyncPayload' }
|
||
responses:
|
||
'200':
|
||
description: Draft synced
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
result: { type: string }
|
||
hash: { type: string }
|
||
updated_at: { type: number }
|
||
'400': { description: Hash mismatch }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/config:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get snippet draft workflow config limits
|
||
operationId: get_snippet_draft_config
|
||
responses:
|
||
'200':
|
||
description: Config retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
parallel_depth_limit: { type: integer }
|
||
|
||
/snippets/{snippet_id}/workflows/publish:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get published workflow for snippet
|
||
operationId: get_snippet_published_workflow
|
||
responses:
|
||
'200':
|
||
description: Published workflow retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/Workflow' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Publish snippet workflow
|
||
operationId: publish_snippet_workflow
|
||
responses:
|
||
'200':
|
||
description: Workflow published
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
result: { type: string }
|
||
created_at: { type: number }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
|
||
/snippets/{snippet_id}/workflows/default-workflow-block-configs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get default block configurations
|
||
operationId: get_snippet_default_block_configs
|
||
responses:
|
||
'200': { description: Default block configs retrieved }
|
||
|
||
/snippets/{snippet_id}/workflow-runs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: List workflow runs for snippet
|
||
operationId: list_snippet_workflow_runs
|
||
parameters:
|
||
- name: last_id
|
||
in: query
|
||
schema: { type: string }
|
||
- $ref: '#/components/parameters/LimitParam'
|
||
responses:
|
||
'200':
|
||
description: Workflow runs retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/WorkflowRunPagination' }
|
||
|
||
/snippets/{snippet_id}/workflow-runs/{run_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get workflow run detail
|
||
operationId: get_snippet_workflow_run_detail
|
||
responses:
|
||
'200':
|
||
description: Run detail retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/WorkflowRunDetail' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflow-runs/{run_id}/node-executions:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: List node executions for a workflow run
|
||
operationId: list_snippet_workflow_run_node_executions
|
||
responses:
|
||
'200':
|
||
description: Node executions retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/WorkflowNodeExecution' } }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/nodes/{node_id}/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/NodeId'
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Run a single node in draft workflow (single-step debug)
|
||
operationId: run_snippet_draft_node
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetDraftNodeRunPayload' }
|
||
responses:
|
||
'200':
|
||
description: Node run result
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/WorkflowNodeExecution' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/nodes/{node_id}/last-run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/NodeId'
|
||
get:
|
||
tags: [Snippet Workflows]
|
||
summary: Get last run result for a node
|
||
operationId: get_snippet_draft_node_last_run
|
||
responses:
|
||
'200':
|
||
description: Node last run retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/WorkflowNodeExecution' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/iteration/nodes/{node_id}/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/NodeId'
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Run iteration node (SSE stream)
|
||
operationId: run_snippet_draft_iteration_node
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetIterationNodeRunPayload' }
|
||
responses:
|
||
'200':
|
||
description: SSE stream with iteration progress
|
||
content:
|
||
text/event-stream: {}
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/loop/nodes/{node_id}/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- $ref: '#/components/parameters/NodeId'
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Run loop node (SSE stream)
|
||
operationId: run_snippet_draft_loop_node
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetLoopNodeRunPayload' }
|
||
responses:
|
||
'200':
|
||
description: SSE stream with loop progress
|
||
content:
|
||
text/event-stream: {}
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflows/draft/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Run draft workflow (SSE stream)
|
||
operationId: run_snippet_draft_workflow
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/SnippetDraftRunPayload' }
|
||
responses:
|
||
'200':
|
||
description: SSE stream with execution progress
|
||
content:
|
||
text/event-stream: {}
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/snippets/{snippet_id}/workflow-runs/tasks/{task_id}/stop:
|
||
parameters:
|
||
- $ref: '#/components/parameters/SnippetId'
|
||
- name: task_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
post:
|
||
tags: [Snippet Workflows]
|
||
summary: Stop a running snippet workflow task
|
||
operationId: stop_snippet_workflow_task
|
||
responses:
|
||
'200':
|
||
description: Task stopped
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
result: { type: string }
|
||
|
||
# ----------------------------------------------------------
|
||
# Evaluation (App / Snippet targets)
|
||
# ----------------------------------------------------------
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/dataset-template/download:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
post:
|
||
tags: [Evaluation]
|
||
summary: Download evaluation dataset template
|
||
operationId: download_evaluation_dataset_template
|
||
responses:
|
||
'200':
|
||
description: XLSX template streamed as attachment
|
||
content:
|
||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: {}
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get evaluation configuration
|
||
operationId: get_evaluation_detail
|
||
responses:
|
||
'200':
|
||
description: Evaluation configuration retrieved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfig' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
put:
|
||
tags: [Evaluation]
|
||
summary: Save evaluation configuration
|
||
operationId: save_evaluation_detail
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfigData' }
|
||
responses:
|
||
'200':
|
||
description: Configuration saved
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationConfig' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/logs:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get evaluation run history
|
||
operationId: get_evaluation_logs
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- name: page_size
|
||
in: query
|
||
schema: { type: integer, default: 20 }
|
||
responses:
|
||
'200':
|
||
description: Evaluation logs retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/EvaluationRun' } }
|
||
total: { type: integer }
|
||
page: { type: integer }
|
||
page_size: { type: integer }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/run:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
post:
|
||
tags: [Evaluation]
|
||
summary: Start an evaluation run
|
||
operationId: start_evaluation_run
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRunRequest' }
|
||
responses:
|
||
'200':
|
||
description: Evaluation run started
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRun' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
'429': { description: Max concurrent runs reached }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/runs/{run_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get evaluation run detail with items
|
||
operationId: get_evaluation_run_detail
|
||
parameters:
|
||
- $ref: '#/components/parameters/PageParam'
|
||
- name: page_size
|
||
in: query
|
||
schema: { type: integer, default: 50 }
|
||
responses:
|
||
'200':
|
||
description: Run detail with paginated items
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
run: { $ref: '#/components/schemas/EvaluationRun' }
|
||
items:
|
||
type: object
|
||
properties:
|
||
data: { type: array, items: { $ref: '#/components/schemas/EvaluationRunItem' } }
|
||
total: { type: integer }
|
||
page: { type: integer }
|
||
page_size: { type: integer }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/runs/{run_id}/cancel:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
- $ref: '#/components/parameters/RunId'
|
||
post:
|
||
tags: [Evaluation]
|
||
summary: Cancel a running evaluation
|
||
operationId: cancel_evaluation_run
|
||
responses:
|
||
'200':
|
||
description: Evaluation run cancelled
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/EvaluationRun' }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/metrics:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get available evaluation metrics per category
|
||
operationId: get_evaluation_metrics
|
||
responses:
|
||
'200':
|
||
description: Metrics grouped by category
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
metrics:
|
||
type: object
|
||
additionalProperties:
|
||
type: array
|
||
items: { type: string }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/node-info:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
post:
|
||
tags: [Evaluation]
|
||
summary: Get workflow/snippet node info grouped by metric
|
||
operationId: get_evaluation_node_info
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
metrics:
|
||
type: array
|
||
items: { type: string }
|
||
description: Metric names to query. Omit or pass empty to get all nodes.
|
||
responses:
|
||
'200':
|
||
description: Node info grouped by metric or "all"
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
additionalProperties:
|
||
type: array
|
||
items: { $ref: '#/components/schemas/NodeInfo' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/evaluation/available-metrics:
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get centrally-defined list of evaluation metrics
|
||
operationId: get_available_evaluation_metrics
|
||
responses:
|
||
'200':
|
||
description: Available metrics list
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
metrics:
|
||
type: array
|
||
items: { type: string }
|
||
example:
|
||
- faithfulness
|
||
- answer_relevancy
|
||
- answer_correctness
|
||
- semantic_similarity
|
||
- context_precision
|
||
- context_recall
|
||
- context_relevance
|
||
- tool_correctness
|
||
- task_completion
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/files/{file_id}:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
- name: file_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Download evaluation file
|
||
operationId: download_evaluation_file
|
||
responses:
|
||
'200':
|
||
description: File info and download URL
|
||
content:
|
||
application/json:
|
||
schema: { $ref: '#/components/schemas/FileInfo' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
/{evaluate_target_type}/{evaluate_target_id}/evaluation/version:
|
||
parameters:
|
||
- $ref: '#/components/parameters/EvaluateTargetType'
|
||
- $ref: '#/components/parameters/EvaluateTargetId'
|
||
get:
|
||
tags: [Evaluation]
|
||
summary: Get evaluation target version details
|
||
operationId: get_evaluation_version_detail
|
||
parameters:
|
||
- name: version
|
||
in: query
|
||
required: true
|
||
schema: { type: string }
|
||
responses:
|
||
'200':
|
||
description: Version graph retrieved
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
graph: { type: object }
|
||
'400': { $ref: '#/components/responses/BadRequest' }
|
||
'404': { $ref: '#/components/responses/NotFound' }
|
||
|
||
# ============================================================
|
||
# Components
|
||
# ============================================================
|
||
components:
|
||
|
||
# ---------- Parameters ----------
|
||
parameters:
|
||
PageParam:
|
||
name: page
|
||
in: query
|
||
schema: { type: integer, default: 1 }
|
||
LimitParam:
|
||
name: limit
|
||
in: query
|
||
schema: { type: integer, default: 20 }
|
||
DatasetId:
|
||
name: dataset_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
SnippetId:
|
||
name: snippet_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
RunId:
|
||
name: run_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
NodeId:
|
||
name: node_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string }
|
||
EvaluateTargetType:
|
||
name: evaluate_target_type
|
||
in: path
|
||
required: true
|
||
schema:
|
||
type: string
|
||
enum: [app, snippets]
|
||
description: "Evaluation target type: app or snippets"
|
||
EvaluateTargetId:
|
||
name: evaluate_target_id
|
||
in: path
|
||
required: true
|
||
schema: { type: string, format: uuid }
|
||
description: Evaluation target ID (App ID or Snippet ID)
|
||
|
||
# ---------- Responses ----------
|
||
responses:
|
||
BadRequest:
|
||
description: Invalid request
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
message: { type: string }
|
||
NotFound:
|
||
description: Resource not found
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
message: { type: string }
|
||
Forbidden:
|
||
description: Permission denied
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
message: { type: string }
|
||
|
||
# ---------- Schemas ----------
|
||
schemas:
|
||
|
||
# -- Dataset --
|
||
DatasetDetail:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
name: { type: string }
|
||
description: { type: string }
|
||
provider: { type: string }
|
||
permission: { type: string }
|
||
indexing_technique: { type: string }
|
||
embedding_model: { type: string }
|
||
embedding_model_provider: { type: string }
|
||
embedding_available: { type: boolean }
|
||
created_at: { type: number }
|
||
updated_at: { type: number }
|
||
|
||
DatasetCreatePayload:
|
||
type: object
|
||
required: [name]
|
||
properties:
|
||
name: { type: string, minLength: 1, maxLength: 40 }
|
||
description: { type: string, maxLength: 400 }
|
||
indexing_technique: { type: string }
|
||
permission: { type: string, enum: [only_me, all_team_members, partial_members] }
|
||
provider: { type: string, default: vendor }
|
||
external_knowledge_api_id: { type: string }
|
||
external_knowledge_id: { type: string }
|
||
|
||
DatasetUpdatePayload:
|
||
type: object
|
||
properties:
|
||
name: { type: string, minLength: 1, maxLength: 40 }
|
||
description: { type: string, maxLength: 400 }
|
||
permission: { type: string }
|
||
indexing_technique: { type: string }
|
||
embedding_model: { type: string }
|
||
embedding_model_provider: { type: string }
|
||
retrieval_model: { type: object }
|
||
icon_info: { type: object }
|
||
|
||
IndexingEstimatePayload:
|
||
type: object
|
||
required: [info_list, process_rule, indexing_technique]
|
||
properties:
|
||
info_list: { type: object }
|
||
process_rule: { type: object }
|
||
indexing_technique: { type: string }
|
||
doc_form: { type: string, default: text_model }
|
||
dataset_id: { type: string }
|
||
doc_language: { type: string, default: English }
|
||
|
||
ApiKeyItem:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
type: { type: string }
|
||
token: { type: string }
|
||
created_at: { type: number }
|
||
|
||
# -- Snippet --
|
||
Snippet:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
name: { type: string }
|
||
description: { type: string }
|
||
type: { type: string, enum: [node, group] }
|
||
is_published: { type: boolean }
|
||
version: { type: string }
|
||
use_count: { type: integer }
|
||
icon_info: { type: object }
|
||
input_fields: { type: array, items: { type: object } }
|
||
created_at: { type: number }
|
||
updated_at: { type: number }
|
||
|
||
SnippetListItem:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
name: { type: string }
|
||
description: { type: string }
|
||
type: { type: string }
|
||
is_published: { type: boolean }
|
||
use_count: { type: integer }
|
||
icon_info: { type: object }
|
||
created_at: { type: number }
|
||
updated_at: { type: number }
|
||
|
||
CreateSnippetPayload:
|
||
type: object
|
||
required: [name]
|
||
properties:
|
||
name: { type: string }
|
||
description: { type: string }
|
||
type: { type: string, enum: [node, group] }
|
||
icon_info: { type: object }
|
||
input_fields: { type: array, items: { type: object } }
|
||
|
||
UpdateSnippetPayload:
|
||
type: object
|
||
properties:
|
||
name: { type: string }
|
||
description: { type: string }
|
||
icon_info: { type: object }
|
||
|
||
SnippetImportPayload:
|
||
type: object
|
||
properties:
|
||
mode: { type: string }
|
||
yaml_content: { type: string }
|
||
yaml_url: { type: string }
|
||
snippet_id: { type: string }
|
||
name: { type: string }
|
||
description: { type: string }
|
||
|
||
# -- Snippet Workflow --
|
||
Workflow:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
graph: { type: object }
|
||
features: { type: object }
|
||
hash: { type: string }
|
||
created_at: { type: number }
|
||
updated_at: { type: number }
|
||
|
||
SnippetDraftSyncPayload:
|
||
type: object
|
||
properties:
|
||
graph: { type: object }
|
||
hash: { type: string }
|
||
environment_variables: { type: array, items: { type: object } }
|
||
conversation_variables: { type: array, items: { type: object } }
|
||
input_variables: { type: array, items: { type: object } }
|
||
|
||
SnippetDraftNodeRunPayload:
|
||
type: object
|
||
properties:
|
||
inputs: { type: object }
|
||
query: { type: string }
|
||
files: { type: array, items: { type: object } }
|
||
|
||
SnippetDraftRunPayload:
|
||
type: object
|
||
properties:
|
||
inputs: { type: object }
|
||
files: { type: array, items: { type: object } }
|
||
|
||
SnippetIterationNodeRunPayload:
|
||
type: object
|
||
properties:
|
||
inputs: { type: object }
|
||
|
||
SnippetLoopNodeRunPayload:
|
||
type: object
|
||
properties:
|
||
inputs: { type: object }
|
||
|
||
WorkflowRunPagination:
|
||
type: object
|
||
properties:
|
||
limit: { type: integer }
|
||
has_more: { type: boolean }
|
||
data: { type: array, items: { $ref: '#/components/schemas/WorkflowRunDetail' } }
|
||
|
||
WorkflowRunDetail:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
version: { type: string }
|
||
status: { type: string, enum: [running, succeeded, failed, stopped, partial-succeeded] }
|
||
elapsed_time: { type: number }
|
||
total_tokens: { type: integer }
|
||
total_steps: { type: integer }
|
||
created_at: { type: number }
|
||
finished_at: { type: number }
|
||
exceptions_count: { type: integer }
|
||
|
||
WorkflowNodeExecution:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
index: { type: integer }
|
||
node_id: { type: string }
|
||
node_type: { type: string }
|
||
title: { type: string }
|
||
inputs: { type: object }
|
||
process_data: { type: object }
|
||
outputs: { type: object }
|
||
status: { type: string }
|
||
error: { type: string }
|
||
elapsed_time: { type: number }
|
||
created_at: { type: number }
|
||
finished_at: { type: number }
|
||
|
||
# -- Evaluation --
|
||
EvaluationConfig:
|
||
type: object
|
||
properties:
|
||
evaluation_model: { type: string, nullable: true }
|
||
evaluation_model_provider: { type: string, nullable: true }
|
||
metrics_config: { type: object, nullable: true }
|
||
judgement_conditions: { type: object, nullable: true }
|
||
|
||
EvaluationConfigData:
|
||
type: object
|
||
properties:
|
||
evaluation_model: { type: string }
|
||
evaluation_model_provider: { type: string }
|
||
default_metrics:
|
||
type: array
|
||
items:
|
||
type: object
|
||
properties:
|
||
metric: { type: string }
|
||
node_info_list:
|
||
type: array
|
||
items: { $ref: '#/components/schemas/NodeInfo' }
|
||
customized_metrics:
|
||
type: object
|
||
nullable: true
|
||
properties:
|
||
evaluation_workflow_id: { type: string }
|
||
input_fields: { type: object }
|
||
output_fields: { type: array, items: { type: object } }
|
||
judgment_config:
|
||
type: object
|
||
nullable: true
|
||
|
||
EvaluationRunRequest:
|
||
allOf:
|
||
- $ref: '#/components/schemas/EvaluationConfigData'
|
||
- type: object
|
||
required: [file_id]
|
||
properties:
|
||
file_id: { type: string, format: uuid }
|
||
|
||
EvaluationRun:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
tenant_id: { type: string, format: uuid }
|
||
target_type: { type: string }
|
||
target_id: { type: string, format: uuid }
|
||
evaluation_config_id: { type: string, format: uuid }
|
||
status: { type: string, enum: [pending, running, completed, failed, cancelled] }
|
||
dataset_file_id: { type: string, format: uuid, nullable: true }
|
||
result_file_id: { type: string, format: uuid, nullable: true }
|
||
total_items: { type: integer }
|
||
completed_items: { type: integer }
|
||
failed_items: { type: integer }
|
||
progress: { type: number }
|
||
metrics_summary: { type: object }
|
||
error: { type: string, nullable: true }
|
||
created_by: { type: string, format: uuid }
|
||
started_at: { type: number, nullable: true }
|
||
completed_at: { type: number, nullable: true }
|
||
created_at: { type: number }
|
||
|
||
EvaluationRunItem:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
item_index: { type: integer }
|
||
inputs: { type: object }
|
||
expected_output: { type: string, nullable: true }
|
||
actual_output: { type: string, nullable: true }
|
||
metrics:
|
||
type: array
|
||
items:
|
||
type: object
|
||
properties:
|
||
name: { type: string }
|
||
value: {}
|
||
details: { type: object }
|
||
judgment: { type: object }
|
||
metadata: { type: object }
|
||
error: { type: string, nullable: true }
|
||
overall_score: { type: number, nullable: true }
|
||
|
||
NodeInfo:
|
||
type: object
|
||
properties:
|
||
node_id: { type: string }
|
||
type: { type: string }
|
||
title: { type: string }
|
||
|
||
FileInfo:
|
||
type: object
|
||
properties:
|
||
id: { type: string, format: uuid }
|
||
name: { type: string }
|
||
size: { type: integer }
|
||
extension: { type: string }
|
||
mime_type: { type: string }
|
||
created_at: { type: number }
|
||
download_url: { type: string }
|