refactor(api): migrate console.datasets.metadata to BaseModel (#36450)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
chariri
2026-05-22 00:04:42 +09:00
committed by GitHub
parent c50d504c44
commit 092c8bca81
18 changed files with 461 additions and 425 deletions

View File

@@ -1,14 +1,18 @@
from typing import Literal
from flask_restx import Resource, marshal_with
from flask_restx import Resource
from werkzeug.exceptions import NotFound
from controllers.common.controller_schemas import MetadataUpdatePayload
from controllers.common.fields import SimpleResultResponse
from controllers.common.schema import register_response_schema_models, register_schema_models
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, enterprise_license_required, setup_required
from fields.dataset_fields import dataset_metadata_fields
from fields.dataset_fields import (
DatasetMetadataBuiltInFieldsResponse,
DatasetMetadataListResponse,
DatasetMetadataResponse,
)
from libs.helper import dump_response
from libs.login import current_account_with_tenant, login_required
from services.dataset_service import DatasetService
from services.entities.knowledge_entities.knowledge_entities import (
@@ -22,7 +26,12 @@ from services.metadata_service import MetadataService
register_schema_models(
console_ns, MetadataArgs, MetadataOperationData, MetadataUpdatePayload, DocumentMetadataOperation, MetadataDetail
)
register_response_schema_models(console_ns, SimpleResultResponse)
register_response_schema_models(
console_ns,
DatasetMetadataBuiltInFieldsResponse,
DatasetMetadataListResponse,
DatasetMetadataResponse,
)
@console_ns.route("/datasets/<uuid:dataset_id>/metadata")
@@ -31,7 +40,7 @@ class DatasetMetadataCreateApi(Resource):
@login_required
@account_initialization_required
@enterprise_license_required
@marshal_with(dataset_metadata_fields)
@console_ns.response(201, "Metadata created successfully", console_ns.models[DatasetMetadataResponse.__name__])
@console_ns.expect(console_ns.models[MetadataArgs.__name__])
def post(self, dataset_id):
current_user, _ = current_account_with_tenant()
@@ -44,18 +53,22 @@ class DatasetMetadataCreateApi(Resource):
DatasetService.check_dataset_permission(dataset, current_user)
metadata = MetadataService.create_metadata(dataset_id_str, metadata_args)
return metadata, 201
return dump_response(DatasetMetadataResponse, metadata), 201
@setup_required
@login_required
@account_initialization_required
@enterprise_license_required
@console_ns.response(
200, "Metadata retrieved successfully", console_ns.models[DatasetMetadataListResponse.__name__]
)
def get(self, dataset_id):
dataset_id_str = str(dataset_id)
dataset = DatasetService.get_dataset(dataset_id_str)
if dataset is None:
raise NotFound("Dataset not found.")
return MetadataService.get_dataset_metadatas(dataset), 200
metadata = MetadataService.get_dataset_metadatas(dataset)
return dump_response(DatasetMetadataListResponse, metadata), 200
@console_ns.route("/datasets/<uuid:dataset_id>/metadata/<uuid:metadata_id>")
@@ -64,7 +77,7 @@ class DatasetMetadataApi(Resource):
@login_required
@account_initialization_required
@enterprise_license_required
@marshal_with(dataset_metadata_fields)
@console_ns.response(200, "Metadata updated successfully", console_ns.models[DatasetMetadataResponse.__name__])
@console_ns.expect(console_ns.models[MetadataUpdatePayload.__name__])
def patch(self, dataset_id, metadata_id):
current_user, _ = current_account_with_tenant()
@@ -79,7 +92,7 @@ class DatasetMetadataApi(Resource):
DatasetService.check_dataset_permission(dataset, current_user)
metadata = MetadataService.update_metadata_name(dataset_id_str, metadata_id_str, name)
return metadata, 200
return dump_response(DatasetMetadataResponse, metadata), 200
@setup_required
@login_required
@@ -96,7 +109,8 @@ class DatasetMetadataApi(Resource):
DatasetService.check_dataset_permission(dataset, current_user)
MetadataService.delete_metadata(dataset_id_str, metadata_id_str)
return {"result": "success"}, 204
# Frontend callers only await success and invalidate metadata caches; no response body is consumed.
return "", 204
@console_ns.route("/datasets/metadata/built-in")
@@ -105,9 +119,14 @@ class DatasetMetadataBuiltInFieldApi(Resource):
@login_required
@account_initialization_required
@enterprise_license_required
@console_ns.response(
200,
"Built-in fields retrieved successfully",
console_ns.models[DatasetMetadataBuiltInFieldsResponse.__name__],
)
def get(self):
built_in_fields = MetadataService.get_built_in_fields()
return {"fields": built_in_fields}, 200
return dump_response(DatasetMetadataBuiltInFieldsResponse, {"fields": built_in_fields}), 200
@console_ns.route("/datasets/<uuid:dataset_id>/metadata/built-in/<string:action>")
@@ -116,7 +135,7 @@ class DatasetMetadataBuiltInFieldActionApi(Resource):
@login_required
@account_initialization_required
@enterprise_license_required
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(204, "Action completed successfully")
def post(self, dataset_id, action: Literal["enable", "disable"]):
current_user, _ = current_account_with_tenant()
dataset_id_str = str(dataset_id)
@@ -130,7 +149,8 @@ class DatasetMetadataBuiltInFieldActionApi(Resource):
MetadataService.enable_built_in_field(dataset)
case "disable":
MetadataService.disable_built_in_field(dataset)
return {"result": "success"}, 200
# Frontend callers only await success and invalidate metadata caches; no response body is consumed.
return "", 204
@console_ns.route("/datasets/<uuid:dataset_id>/documents/metadata")
@@ -140,7 +160,10 @@ class DocumentMetadataEditApi(Resource):
@account_initialization_required
@enterprise_license_required
@console_ns.expect(console_ns.models[MetadataOperationData.__name__])
@console_ns.response(200, "Success", console_ns.models[SimpleResultResponse.__name__])
@console_ns.response(
204,
"Documents metadata updated successfully",
)
def post(self, dataset_id):
current_user, _ = current_account_with_tenant()
dataset_id_str = str(dataset_id)
@@ -153,4 +176,5 @@ class DocumentMetadataEditApi(Resource):
MetadataService.update_documents_metadata(dataset, metadata_args)
return {"result": "success"}, 200
# Frontend callers only await success and invalidate caches; no response body is consumed.
return "", 204

View File

@@ -1,15 +1,19 @@
from typing import Literal
from flask_login import current_user
from flask_restx import marshal
from werkzeug.exceptions import NotFound
from controllers.common.controller_schemas import MetadataUpdatePayload
from controllers.common.fields import SimpleResultResponse
from controllers.common.schema import register_response_schema_models, register_schema_model, register_schema_models
from controllers.service_api import service_api_ns
from controllers.service_api.wraps import DatasetApiResource, cloud_edition_billing_rate_limit_check
from fields.dataset_fields import dataset_metadata_fields
from fields.dataset_fields import (
DatasetMetadataActionResponse,
DatasetMetadataBuiltInFieldsResponse,
DatasetMetadataListResponse,
DatasetMetadataResponse,
)
from libs.helper import dump_response
from services.dataset_service import DatasetService
from services.entities.knowledge_entities.knowledge_entities import (
DocumentMetadataOperation,
@@ -27,7 +31,13 @@ register_schema_models(
DocumentMetadataOperation,
MetadataOperationData,
)
register_response_schema_models(service_api_ns, SimpleResultResponse)
register_response_schema_models(
service_api_ns,
DatasetMetadataActionResponse,
DatasetMetadataBuiltInFieldsResponse,
DatasetMetadataListResponse,
DatasetMetadataResponse,
)
@service_api_ns.route("/datasets/<uuid:dataset_id>/metadata")
@@ -43,6 +53,9 @@ class DatasetMetadataCreateServiceApi(DatasetApiResource):
404: "Dataset not found",
}
)
@service_api_ns.response(
201, "Metadata created successfully", service_api_ns.models[DatasetMetadataResponse.__name__]
)
@cloud_edition_billing_rate_limit_check("knowledge", "dataset")
def post(self, tenant_id, dataset_id):
"""Create metadata for a dataset."""
@@ -55,7 +68,7 @@ class DatasetMetadataCreateServiceApi(DatasetApiResource):
DatasetService.check_dataset_permission(dataset, current_user)
metadata = MetadataService.create_metadata(dataset_id_str, metadata_args)
return marshal(metadata, dataset_metadata_fields), 201
return dump_response(DatasetMetadataResponse, metadata), 201
@service_api_ns.doc("get_dataset_metadata")
@service_api_ns.doc(description="Get all metadata for a dataset")
@@ -67,13 +80,17 @@ class DatasetMetadataCreateServiceApi(DatasetApiResource):
404: "Dataset not found",
}
)
@service_api_ns.response(
200, "Metadata retrieved successfully", service_api_ns.models[DatasetMetadataListResponse.__name__]
)
def get(self, tenant_id, dataset_id):
"""Get all metadata for a dataset."""
dataset_id_str = str(dataset_id)
dataset = DatasetService.get_dataset(dataset_id_str)
if dataset is None:
raise NotFound("Dataset not found.")
return MetadataService.get_dataset_metadatas(dataset), 200
metadata = MetadataService.get_dataset_metadatas(dataset)
return dump_response(DatasetMetadataListResponse, metadata), 200
@service_api_ns.route("/datasets/<uuid:dataset_id>/metadata/<uuid:metadata_id>")
@@ -89,6 +106,9 @@ class DatasetMetadataServiceApi(DatasetApiResource):
404: "Dataset or metadata not found",
}
)
@service_api_ns.response(
200, "Metadata updated successfully", service_api_ns.models[DatasetMetadataResponse.__name__]
)
@cloud_edition_billing_rate_limit_check("knowledge", "dataset")
def patch(self, tenant_id, dataset_id, metadata_id):
"""Update metadata name."""
@@ -102,7 +122,7 @@ class DatasetMetadataServiceApi(DatasetApiResource):
DatasetService.check_dataset_permission(dataset, current_user)
metadata = MetadataService.update_metadata_name(dataset_id_str, metadata_id_str, payload.name)
return marshal(metadata, dataset_metadata_fields), 200
return dump_response(DatasetMetadataResponse, metadata), 200
@service_api_ns.doc("delete_dataset_metadata")
@service_api_ns.doc(description="Delete metadata")
@@ -114,6 +134,7 @@ class DatasetMetadataServiceApi(DatasetApiResource):
404: "Dataset or metadata not found",
}
)
@service_api_ns.response(204, "Metadata deleted successfully")
@cloud_edition_billing_rate_limit_check("knowledge", "dataset")
def delete(self, tenant_id, dataset_id, metadata_id):
"""Delete metadata."""
@@ -138,10 +159,15 @@ class DatasetMetadataBuiltInFieldServiceApi(DatasetApiResource):
401: "Unauthorized - invalid API token",
}
)
@service_api_ns.response(
200,
"Built-in fields retrieved successfully",
service_api_ns.models[DatasetMetadataBuiltInFieldsResponse.__name__],
)
def get(self, tenant_id, dataset_id):
"""Get all built-in metadata fields."""
built_in_fields = MetadataService.get_built_in_fields()
return {"fields": built_in_fields}, 200
return dump_response(DatasetMetadataBuiltInFieldsResponse, {"fields": built_in_fields}), 200
@service_api_ns.route("/datasets/<uuid:dataset_id>/metadata/built-in/<string:action>")
@@ -157,9 +183,7 @@ class DatasetMetadataBuiltInFieldActionServiceApi(DatasetApiResource):
}
)
@service_api_ns.response(
200,
"Action completed successfully",
service_api_ns.models[SimpleResultResponse.__name__],
200, "Action completed successfully", service_api_ns.models[DatasetMetadataActionResponse.__name__]
)
@cloud_edition_billing_rate_limit_check("knowledge", "dataset")
def post(self, tenant_id, dataset_id, action: Literal["enable", "disable"]):
@@ -175,7 +199,7 @@ class DatasetMetadataBuiltInFieldActionServiceApi(DatasetApiResource):
MetadataService.enable_built_in_field(dataset)
case "disable":
MetadataService.disable_built_in_field(dataset)
return {"result": "success"}, 200
return dump_response(DatasetMetadataActionResponse, {"result": "success"}), 200
@service_api_ns.route("/datasets/<uuid:dataset_id>/documents/metadata")
@@ -194,7 +218,7 @@ class DocumentMetadataEditServiceApi(DatasetApiResource):
@service_api_ns.response(
200,
"Documents metadata updated successfully",
service_api_ns.models[SimpleResultResponse.__name__],
service_api_ns.models[DatasetMetadataActionResponse.__name__],
)
@cloud_edition_billing_rate_limit_check("knowledge", "dataset")
def post(self, tenant_id, dataset_id):
@@ -209,4 +233,4 @@ class DocumentMetadataEditServiceApi(DatasetApiResource):
MetadataService.update_documents_metadata(dataset, metadata_args)
return {"result": "success"}, 200
return dump_response(DatasetMetadataActionResponse, {"result": "success"}), 200

View File

@@ -1,23 +0,0 @@
from flask_restx import fields
from libs.helper import TimestampField
class HiddenAPIKey(fields.Raw):
def output(self, key, obj, **kwargs):
api_key = obj.api_key
# If the length of the api_key is less than 8 characters, show the first and last characters
if len(api_key) <= 8:
return api_key[0] + "******" + api_key[-1]
# If the api_key is greater than 8 characters, show the first three and the last three characters
else:
return api_key[:3] + "******" + api_key[-3:]
api_based_extension_fields = {
"id": fields.String,
"name": fields.String,
"api_endpoint": fields.String,
"api_key": HiddenAPIKey,
"created_at": TimestampField,
}

View File

@@ -1,5 +1,6 @@
from flask_restx import fields
from fields.base import ResponseModel
from libs.helper import TimestampField
dataset_fields = {
@@ -13,6 +14,38 @@ dataset_fields = {
"created_at": TimestampField,
}
class DatasetMetadataResponse(ResponseModel):
id: str
type: str
name: str
class DatasetMetadataListItemResponse(ResponseModel):
id: str
name: str
type: str
count: int = 0
class DatasetMetadataListResponse(ResponseModel):
doc_metadata: list[DatasetMetadataListItemResponse]
built_in_field_enabled: bool
class DatasetMetadataBuiltInFieldResponse(ResponseModel):
name: str
type: str
class DatasetMetadataBuiltInFieldsResponse(ResponseModel):
fields: list[DatasetMetadataBuiltInFieldResponse]
class DatasetMetadataActionResponse(ResponseModel):
result: str
reranking_model_fields = {"reranking_provider_name": fields.String, "reranking_model_name": fields.String}
keyword_setting_fields = {"keyword_weight": fields.Float}
@@ -133,9 +166,3 @@ dataset_query_detail_fields = {
"created_by": fields.String,
"created_at": TimestampField,
}
dataset_metadata_fields = {
"id": fields.String,
"type": fields.String,
"name": fields.String,
}

View File

@@ -1,26 +0,0 @@
from flask_restx import fields
from libs.helper import AppIconUrlField, TimestampField
app_fields = {
"id": fields.String,
"name": fields.String,
"mode": fields.String,
"icon_type": fields.String,
"icon": fields.String,
"icon_background": fields.String,
"icon_url": AppIconUrlField,
"use_icon_as_answer_icon": fields.Boolean,
}
installed_app_fields = {
"id": fields.String,
"app": fields.Nested(app_fields),
"app_owner_tenant_id": fields.String,
"is_pinned": fields.Boolean,
"last_used_at": TimestampField,
"editable": fields.Boolean,
"uninstallable": fields.Boolean,
}
installed_app_list_fields = {"installed_apps": fields.List(fields.Nested(installed_app_fields))}

View File

@@ -1,142 +0,0 @@
from __future__ import annotations
from datetime import datetime
from typing import Any
from flask_restx import Namespace, fields
from pydantic import field_validator
from fields.base import ResponseModel
from fields.end_user_fields import SimpleEndUser, simple_end_user_fields
from fields.member_fields import SimpleAccount, simple_account_fields
from fields.workflow_run_fields import (
WorkflowRunForArchivedLogResponse,
WorkflowRunForLogResponse,
build_workflow_run_for_archived_log_model,
build_workflow_run_for_log_model,
workflow_run_for_archived_log_fields,
workflow_run_for_log_fields,
)
from libs.helper import TimestampField, to_timestamp
workflow_app_log_partial_fields = {
"id": fields.String,
"workflow_run": fields.Nested(workflow_run_for_log_fields, attribute="workflow_run", allow_null=True),
"details": fields.Raw(attribute="details"),
"created_from": fields.String,
"created_by_role": fields.String,
"created_by_account": fields.Nested(simple_account_fields, attribute="created_by_account", allow_null=True),
"created_by_end_user": fields.Nested(simple_end_user_fields, attribute="created_by_end_user", allow_null=True),
"created_at": TimestampField,
}
def build_workflow_app_log_partial_model(api_or_ns: Namespace):
"""Build the workflow app log partial model for the API or Namespace."""
workflow_run_model = build_workflow_run_for_log_model(api_or_ns)
copied_fields = workflow_app_log_partial_fields.copy()
copied_fields["workflow_run"] = fields.Nested(workflow_run_model, attribute="workflow_run", allow_null=True)
return api_or_ns.model("WorkflowAppLogPartial", copied_fields)
workflow_archived_log_partial_fields = {
"id": fields.String,
"workflow_run": fields.Nested(workflow_run_for_archived_log_fields, allow_null=True),
"trigger_metadata": fields.Raw,
"created_by_account": fields.Nested(simple_account_fields, attribute="created_by_account", allow_null=True),
"created_by_end_user": fields.Nested(simple_end_user_fields, attribute="created_by_end_user", allow_null=True),
"created_at": TimestampField,
}
def build_workflow_archived_log_partial_model(api_or_ns: Namespace):
"""Build the workflow archived log partial model for the API or Namespace."""
workflow_run_model = build_workflow_run_for_archived_log_model(api_or_ns)
copied_fields = workflow_archived_log_partial_fields.copy()
copied_fields["workflow_run"] = fields.Nested(workflow_run_model, allow_null=True)
return api_or_ns.model("WorkflowArchivedLogPartial", copied_fields)
workflow_app_log_pagination_fields = {
"page": fields.Integer,
"limit": fields.Integer,
"total": fields.Integer,
"has_more": fields.Boolean,
"data": fields.List(fields.Nested(workflow_app_log_partial_fields)),
}
def build_workflow_app_log_pagination_model(api_or_ns: Namespace):
"""Build the workflow app log pagination model for the API or Namespace."""
# Build the nested partial model first
workflow_app_log_partial_model = build_workflow_app_log_partial_model(api_or_ns)
copied_fields = workflow_app_log_pagination_fields.copy()
copied_fields["data"] = fields.List(fields.Nested(workflow_app_log_partial_model))
return api_or_ns.model("WorkflowAppLogPagination", copied_fields)
workflow_archived_log_pagination_fields = {
"page": fields.Integer,
"limit": fields.Integer,
"total": fields.Integer,
"has_more": fields.Boolean,
"data": fields.List(fields.Nested(workflow_archived_log_partial_fields)),
}
def build_workflow_archived_log_pagination_model(api_or_ns: Namespace):
"""Build the workflow archived log pagination model for the API or Namespace."""
workflow_archived_log_partial_model = build_workflow_archived_log_partial_model(api_or_ns)
copied_fields = workflow_archived_log_pagination_fields.copy()
copied_fields["data"] = fields.List(fields.Nested(workflow_archived_log_partial_model))
return api_or_ns.model("WorkflowArchivedLogPagination", copied_fields)
class WorkflowAppLogPartialResponse(ResponseModel):
id: str
workflow_run: WorkflowRunForLogResponse | None = None
details: Any = None
created_from: str | None = None
created_by_role: str | None = None
created_by_account: SimpleAccount | None = None
created_by_end_user: SimpleEndUser | None = None
created_at: int | None = None
@field_validator("created_at", mode="before")
@classmethod
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
return to_timestamp(value)
class WorkflowArchivedLogPartialResponse(ResponseModel):
id: str
workflow_run: WorkflowRunForArchivedLogResponse | None = None
trigger_metadata: Any = None
created_by_account: SimpleAccount | None = None
created_by_end_user: SimpleEndUser | None = None
created_at: int | None = None
@field_validator("created_at", mode="before")
@classmethod
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
return to_timestamp(value)
class WorkflowAppLogPaginationResponse(ResponseModel):
page: int
limit: int
total: int
has_more: bool
data: list[WorkflowAppLogPartialResponse]
class WorkflowArchivedLogPaginationResponse(ResponseModel):
page: int
limit: int
total: int
has_more: bool
data: list[WorkflowArchivedLogPartialResponse]

View File

@@ -1,25 +0,0 @@
from flask_restx import fields
trigger_fields = {
"id": fields.String,
"trigger_type": fields.String,
"title": fields.String,
"node_id": fields.String,
"provider_name": fields.String,
"icon": fields.String,
"status": fields.String,
"created_at": fields.DateTime(dt_format="iso8601"),
"updated_at": fields.DateTime(dt_format="iso8601"),
}
triggers_list_fields = {"data": fields.List(fields.Nested(trigger_fields))}
webhook_trigger_fields = {
"id": fields.String,
"webhook_id": fields.String,
"webhook_url": fields.String,
"webhook_debug_url": fields.String,
"node_id": fields.String,
"created_at": fields.DateTime(dt_format="iso8601"),
}

View File

@@ -4413,9 +4413,9 @@ Initialize dataset with documents
#### GET
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Success |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Built-in fields retrieved successfully | [DatasetMetadataBuiltInFieldsResponse](#datasetmetadatabuiltinfieldsresponse) |
### /datasets/notion-indexing-estimate
@@ -4730,9 +4730,9 @@ then asynchronously generates summary indexes for the provided documents.
##### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | [SimpleResultResponse](#simpleresultresponse) |
| Code | Description |
| ---- | ----------- |
| 204 | Documents metadata updated successfully |
### /datasets/{dataset_id}/documents/status/{action}/batch
@@ -5342,9 +5342,9 @@ Get dataset indexing status
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Success |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Metadata retrieved successfully | [DatasetMetadataListResponse](#datasetmetadatalistresponse) |
#### POST
##### Parameters
@@ -5356,9 +5356,9 @@ Get dataset indexing status
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Success |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Metadata created successfully | [DatasetMetadataResponse](#datasetmetadataresponse) |
### /datasets/{dataset_id}/metadata/built-in/{action}
@@ -5372,9 +5372,9 @@ Get dataset indexing status
##### Responses
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | [SimpleResultResponse](#simpleresultresponse) |
| Code | Description |
| ---- | ----------- |
| 204 | Action completed successfully |
### /datasets/{dataset_id}/metadata/{metadata_id}
@@ -5403,9 +5403,9 @@ Get dataset indexing status
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Success |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Metadata updated successfully | [DatasetMetadataResponse](#datasetmetadataresponse) |
### /datasets/{dataset_id}/notion/sync
@@ -11733,6 +11733,43 @@ Condition detail
| ---- | ---- | ----------- | -------- |
| keyword_weight | number | | No |
#### DatasetMetadataBuiltInFieldResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetMetadataBuiltInFieldsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| fields | [ [DatasetMetadataBuiltInFieldResponse](#datasetmetadatabuiltinfieldresponse) ] | | Yes |
#### DatasetMetadataListItemResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| count | integer | | No |
| id | string | | Yes |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetMetadataListResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| built_in_field_enabled | boolean | | Yes |
| doc_metadata | [ [DatasetMetadataListItemResponse](#datasetmetadatalistitemresponse) ] | | Yes |
#### DatasetMetadataResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| id | string | | Yes |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetPermissionEnum
| Name | Type | Description | Required |

View File

@@ -877,7 +877,7 @@ Update metadata for multiple documents
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Documents metadata updated successfully | [SimpleResultResponse](#simpleresultresponse) |
| 200 | Documents metadata updated successfully | [DatasetMetadataActionResponse](#datasetmetadataactionresponse) |
| 401 | Unauthorized - invalid API token | |
| 404 | Dataset not found | |
@@ -1378,11 +1378,11 @@ Get all metadata for a dataset
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Metadata retrieved successfully |
| 401 | Unauthorized - invalid API token |
| 404 | Dataset not found |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Metadata retrieved successfully | [DatasetMetadataListResponse](#datasetmetadatalistresponse) |
| 401 | Unauthorized - invalid API token | |
| 404 | Dataset not found | |
#### POST
##### Summary
@@ -1402,11 +1402,11 @@ Create metadata for a dataset
##### Responses
| Code | Description |
| ---- | ----------- |
| 201 | Metadata created successfully |
| 401 | Unauthorized - invalid API token |
| 404 | Dataset not found |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Metadata created successfully | [DatasetMetadataResponse](#datasetmetadataresponse) |
| 401 | Unauthorized - invalid API token | |
| 404 | Dataset not found | |
### /datasets/{dataset_id}/metadata/built-in
@@ -1427,10 +1427,10 @@ Get all built-in metadata fields
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Built-in fields retrieved successfully |
| 401 | Unauthorized - invalid API token |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Built-in fields retrieved successfully | [DatasetMetadataBuiltInFieldsResponse](#datasetmetadatabuiltinfieldsresponse) |
| 401 | Unauthorized - invalid API token | |
### /datasets/{dataset_id}/metadata/built-in/{action}
@@ -1454,7 +1454,7 @@ Enable or disable built-in metadata field
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Action completed successfully | [SimpleResultResponse](#simpleresultresponse) |
| 200 | Action completed successfully | [DatasetMetadataActionResponse](#datasetmetadataactionresponse) |
| 401 | Unauthorized - invalid API token | |
| 404 | Dataset not found | |
@@ -1503,11 +1503,11 @@ Update metadata name
##### Responses
| Code | Description |
| ---- | ----------- |
| 200 | Metadata updated successfully |
| 401 | Unauthorized - invalid API token |
| 404 | Dataset or metadata not found |
| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Metadata updated successfully | [DatasetMetadataResponse](#datasetmetadataresponse) |
| 401 | Unauthorized - invalid API token | |
| 404 | Dataset or metadata not found | |
### /datasets/{dataset_id}/pipeline/datasource-plugins
@@ -2314,6 +2314,49 @@ Condition detail
| page | integer | Page number | No |
| tag_ids | [ string ] | Filter by tag IDs | No |
#### DatasetMetadataActionResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | string | | Yes |
#### DatasetMetadataBuiltInFieldResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetMetadataBuiltInFieldsResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| fields | [ [DatasetMetadataBuiltInFieldResponse](#datasetmetadatabuiltinfieldresponse) ] | | Yes |
#### DatasetMetadataListItemResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| count | integer | | No |
| id | string | | Yes |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetMetadataListResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| built_in_field_enabled | boolean | | Yes |
| doc_metadata | [ [DatasetMetadataListItemResponse](#datasetmetadatalistitemresponse) ] | | Yes |
#### DatasetMetadataResponse
| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| id | string | | Yes |
| name | string | | Yes |
| type | string | | Yes |
#### DatasetPermissionEnum
| Name | Type | Description | Required |

View File

@@ -117,12 +117,13 @@ class TestDatasetMetadataCreateApi:
patch.object(
MetadataService,
"create_metadata",
return_value={"id": "m1", "name": "author"},
return_value={"id": "m1", "type": "string", "name": "author"},
),
):
result, status = method(api, dataset_id)
assert status == 201
assert result["type"] == "string"
assert result["name"] == "author"
def test_create_metadata_dataset_not_found(self, app: Flask, current_user, dataset_id):
@@ -176,13 +177,17 @@ class TestDatasetMetadataGetApi:
patch.object(
MetadataService,
"get_dataset_metadatas",
return_value=[{"id": "m1"}],
return_value={
"doc_metadata": [{"id": "m1", "name": "author", "type": "string", "count": 0}],
"built_in_field_enabled": False,
},
),
):
result, status = method(api, dataset_id)
assert status == 200
assert isinstance(result, list)
assert result["doc_metadata"] == [{"id": "m1", "name": "author", "type": "string", "count": 0}]
assert result["built_in_field_enabled"] is False
def test_get_metadata_dataset_not_found(self, app: Flask, dataset_id):
api = DatasetMetadataCreateApi()
@@ -231,12 +236,13 @@ class TestDatasetMetadataApi:
patch.object(
MetadataService,
"update_metadata_name",
return_value={"id": "m1", "name": "updated-name"},
return_value={"id": "m1", "type": "string", "name": "updated-name"},
),
):
result, status = method(api, dataset_id, metadata_id)
assert status == 200
assert result["type"] == "string"
assert result["name"] == "updated-name"
def test_delete_metadata_success(self, app: Flask, current_user, dataset, dataset_id, metadata_id):
@@ -266,7 +272,7 @@ class TestDatasetMetadataApi:
result, status = method(api, dataset_id, metadata_id)
assert status == 204
assert result["result"] == "success"
assert result == ""
class TestDatasetMetadataBuiltInFieldApi:
@@ -279,13 +285,19 @@ class TestDatasetMetadataBuiltInFieldApi:
patch.object(
MetadataService,
"get_built_in_fields",
return_value=["title", "source"],
return_value=[
{"name": "document_name", "type": "string"},
{"name": "source", "type": "string"},
],
),
):
result, status = method(api)
assert status == 200
assert result["fields"] == ["title", "source"]
assert result["fields"] == [
{"name": "document_name", "type": "string"},
{"name": "source", "type": "string"},
]
class TestDatasetMetadataBuiltInFieldActionApi:
@@ -315,8 +327,8 @@ class TestDatasetMetadataBuiltInFieldActionApi:
):
result, status = method(api, dataset_id, "enable")
assert status == 200
assert result["result"] == "success"
assert status == 204
assert result == ""
class TestDocumentMetadataEditApi:
@@ -359,5 +371,5 @@ class TestDocumentMetadataEditApi:
):
result, status = method(api, dataset_id)
assert status == 200
assert result["result"] == "success"
assert status == 204
assert result == ""

View File

@@ -11,7 +11,7 @@ from flask.views import MethodView as FlaskMethodView
_NEEDS_METHOD_VIEW_CLEANUP = False
if not hasattr(builtins, "MethodView"):
builtins.MethodView = FlaskMethodView
builtins.__dict__["MethodView"] = FlaskMethodView
_NEEDS_METHOD_VIEW_CLEANUP = True
from constants import HIDDEN_VALUE
@@ -22,7 +22,7 @@ from controllers.console.extension import (
)
if _NEEDS_METHOD_VIEW_CLEANUP:
del builtins.MethodView
del builtins.__dict__["MethodView"]
from models.account import AccountStatus
from models.api_based_extension import APIBasedExtension

View File

@@ -67,7 +67,6 @@ class TestDatasetMetadataCreatePost:
def _call_post(api, **kwargs):
return _unwrap(api.post)(api, **kwargs)
@patch("controllers.service_api.dataset.metadata.marshal")
@patch("controllers.service_api.dataset.metadata.MetadataService")
@patch("controllers.service_api.dataset.metadata.DatasetService")
@patch("controllers.service_api.dataset.metadata.current_user")
@@ -76,7 +75,6 @@ class TestDatasetMetadataCreatePost:
mock_current_user,
mock_dataset_svc,
mock_meta_svc,
mock_marshal,
app: Flask,
mock_tenant,
mock_dataset,
@@ -84,9 +82,8 @@ class TestDatasetMetadataCreatePost:
"""Test successful metadata creation."""
mock_dataset_svc.get_dataset.return_value = mock_dataset
mock_dataset_svc.check_dataset_permission.return_value = None
mock_metadata = Mock()
mock_metadata = {"id": "meta-1", "type": "string", "name": "Author"}
mock_meta_svc.create_metadata.return_value = mock_metadata
mock_marshal.return_value = {"id": "meta-1", "name": "Author"}
with app.test_request_context(
f"/datasets/{mock_dataset.id}/metadata",
@@ -101,6 +98,7 @@ class TestDatasetMetadataCreatePost:
)
assert status == 201
assert response == {"id": "meta-1", "type": "string", "name": "Author"}
mock_meta_svc.create_metadata.assert_called_once()
@patch("controllers.service_api.dataset.metadata.DatasetService")
@@ -143,7 +141,10 @@ class TestDatasetMetadataCreateGet:
):
"""Test successful metadata list retrieval."""
mock_dataset_svc.get_dataset.return_value = mock_dataset
mock_meta_svc.get_dataset_metadatas.return_value = [{"id": "m1"}]
mock_meta_svc.get_dataset_metadatas.return_value = {
"doc_metadata": [{"id": "m1", "name": "Author", "type": "string", "count": 0}],
"built_in_field_enabled": False,
}
with app.test_request_context(
f"/datasets/{mock_dataset.id}/metadata",
@@ -156,6 +157,10 @@ class TestDatasetMetadataCreateGet:
)
assert status == 200
assert response == {
"doc_metadata": [{"id": "m1", "name": "Author", "type": "string", "count": 0}],
"built_in_field_enabled": False,
}
@patch("controllers.service_api.dataset.metadata.DatasetService")
def test_get_metadata_dataset_not_found(
@@ -192,7 +197,6 @@ class TestDatasetMetadataServiceApiPatch:
def _call_patch(api, **kwargs):
return _unwrap(api.patch)(api, **kwargs)
@patch("controllers.service_api.dataset.metadata.marshal")
@patch("controllers.service_api.dataset.metadata.MetadataService")
@patch("controllers.service_api.dataset.metadata.DatasetService")
@patch("controllers.service_api.dataset.metadata.current_user")
@@ -201,7 +205,6 @@ class TestDatasetMetadataServiceApiPatch:
mock_current_user,
mock_dataset_svc,
mock_meta_svc,
mock_marshal,
app: Flask,
mock_tenant,
mock_dataset,
@@ -210,8 +213,7 @@ class TestDatasetMetadataServiceApiPatch:
metadata_id = str(uuid.uuid4())
mock_dataset_svc.get_dataset.return_value = mock_dataset
mock_dataset_svc.check_dataset_permission.return_value = None
mock_meta_svc.update_metadata_name.return_value = Mock()
mock_marshal.return_value = {"id": metadata_id, "name": "New Name"}
mock_meta_svc.update_metadata_name.return_value = {"id": metadata_id, "type": "string", "name": "New Name"}
with app.test_request_context(
f"/datasets/{mock_dataset.id}/metadata/{metadata_id}",
@@ -227,6 +229,7 @@ class TestDatasetMetadataServiceApiPatch:
)
assert status == 200
assert response == {"id": metadata_id, "type": "string", "name": "New Name"}
mock_meta_svc.update_metadata_name.assert_called_once()
@patch("controllers.service_api.dataset.metadata.DatasetService")
@@ -357,7 +360,7 @@ class TestDatasetMetadataBuiltInFieldGet:
)
assert status == 200
assert "fields" in response
assert response == {"fields": [{"name": "source", "type": "string"}]}
# ---------------------------------------------------------------------------

View File

@@ -495,16 +495,8 @@ export const init = {
post: post6,
}
/**
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const get7 = oc
.route({
deprecated: true,
description:
'Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
inputStructure: 'detailed',
method: 'GET',
operationId: 'getDatasetsMetadataBuiltIn',
@@ -799,6 +791,7 @@ export const post11 = oc
method: 'POST',
operationId: 'postDatasetsByDatasetIdDocumentsMetadata',
path: '/datasets/{dataset_id}/documents/metadata',
successStatus: 204,
tags: ['console'],
})
.input(
@@ -1643,6 +1636,7 @@ export const post19 = oc
method: 'POST',
operationId: 'postDatasetsByDatasetIdMetadataBuiltInByAction',
path: '/datasets/{dataset_id}/metadata/built-in/{action}',
successStatus: 204,
tags: ['console'],
})
.input(z.object({ params: zPostDatasetsByDatasetIdMetadataBuiltInByActionPath }))
@@ -1668,16 +1662,8 @@ export const delete8 = oc
.input(z.object({ params: zDeleteDatasetsByDatasetIdMetadataByMetadataIdPath }))
.output(zDeleteDatasetsByDatasetIdMetadataByMetadataIdResponse)
/**
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const patch10 = oc
.route({
deprecated: true,
description:
'Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
inputStructure: 'detailed',
method: 'PATCH',
operationId: 'patchDatasetsByDatasetIdMetadataByMetadataId',
@@ -1697,16 +1683,8 @@ export const byMetadataId = {
patch: patch10,
}
/**
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const get29 = oc
.route({
deprecated: true,
description:
'Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
inputStructure: 'detailed',
method: 'GET',
operationId: 'getDatasetsByDatasetIdMetadata',
@@ -1716,20 +1694,13 @@ export const get29 = oc
.input(z.object({ params: zGetDatasetsByDatasetIdMetadataPath }))
.output(zGetDatasetsByDatasetIdMetadataResponse)
/**
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const post20 = oc
.route({
deprecated: true,
description:
'Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
inputStructure: 'detailed',
method: 'POST',
operationId: 'postDatasetsByDatasetIdMetadata',
path: '/datasets/{dataset_id}/metadata',
successStatus: 201,
tags: ['console'],
})
.input(

View File

@@ -140,6 +140,10 @@ export type DatasetAndDocumentResponse = {
documents: Array<DocumentResponse>
}
export type DatasetMetadataBuiltInFieldsResponse = {
fields: Array<DatasetMetadataBuiltInFieldResponse>
}
export type TextContentResponse = {
content: string
}
@@ -291,11 +295,22 @@ export type HitTestingResponse = {
records?: Array<HitTestingRecord>
}
export type DatasetMetadataListResponse = {
built_in_field_enabled: boolean
doc_metadata: Array<DatasetMetadataListItemResponse>
}
export type MetadataArgs = {
name: string
type: 'number' | 'string' | 'time'
}
export type DatasetMetadataResponse = {
id: string
name: string
type: string
}
export type MetadataUpdatePayload = {
name: string
}
@@ -409,6 +424,11 @@ export type DatasetResponse = {
permission?: string | null
}
export type DatasetMetadataBuiltInFieldResponse = {
name: string
type: string
}
export type DocumentMetadataOperation = {
document_id: string
metadata_list: Array<MetadataDetail>
@@ -431,6 +451,13 @@ export type HitTestingRecord = {
tsne_position?: unknown
}
export type DatasetMetadataListItemResponse = {
count?: number
id: string
name: string
type: string
}
export type DatasetContent = {
content?: string
content_type?: string
@@ -977,9 +1004,7 @@ export type GetDatasetsMetadataBuiltInData = {
}
export type GetDatasetsMetadataBuiltInResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataBuiltInFieldsResponse
}
export type GetDatasetsMetadataBuiltInResponse
@@ -1341,7 +1366,9 @@ export type PostDatasetsByDatasetIdDocumentsMetadataData = {
}
export type PostDatasetsByDatasetIdDocumentsMetadataResponses = {
200: SimpleResultResponse
204: {
[key: string]: never
}
}
export type PostDatasetsByDatasetIdDocumentsMetadataResponse
@@ -2052,9 +2079,7 @@ export type GetDatasetsByDatasetIdMetadataData = {
}
export type GetDatasetsByDatasetIdMetadataResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataListResponse
}
export type GetDatasetsByDatasetIdMetadataResponse
@@ -2070,9 +2095,7 @@ export type PostDatasetsByDatasetIdMetadataData = {
}
export type PostDatasetsByDatasetIdMetadataResponses = {
200: {
[key: string]: unknown
}
201: DatasetMetadataResponse
}
export type PostDatasetsByDatasetIdMetadataResponse
@@ -2089,7 +2112,9 @@ export type PostDatasetsByDatasetIdMetadataBuiltInByActionData = {
}
export type PostDatasetsByDatasetIdMetadataBuiltInByActionResponses = {
200: SimpleResultResponse
204: {
[key: string]: never
}
}
export type PostDatasetsByDatasetIdMetadataBuiltInByActionResponse
@@ -2125,9 +2150,7 @@ export type PatchDatasetsByDatasetIdMetadataByMetadataIdData = {
}
export type PatchDatasetsByDatasetIdMetadataByMetadataIdResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataResponse
}
export type PatchDatasetsByDatasetIdMetadataByMetadataIdResponse

View File

@@ -204,6 +204,15 @@ export const zMetadataArgs = z.object({
type: z.enum(['number', 'string', 'time']),
})
/**
* DatasetMetadataResponse
*/
export const zDatasetMetadataResponse = z.object({
id: z.string(),
name: z.string(),
type: z.string(),
})
/**
* MetadataUpdatePayload
*/
@@ -319,6 +328,21 @@ export const zDatasetResponse = z.object({
permission: z.string().nullish(),
})
/**
* DatasetMetadataBuiltInFieldResponse
*/
export const zDatasetMetadataBuiltInFieldResponse = z.object({
name: z.string(),
type: z.string(),
})
/**
* DatasetMetadataBuiltInFieldsResponse
*/
export const zDatasetMetadataBuiltInFieldsResponse = z.object({
fields: z.array(zDatasetMetadataBuiltInFieldResponse),
})
/**
* DocumentMetadataResponse
*/
@@ -368,6 +392,24 @@ export const zDatasetAndDocumentResponse = z.object({
documents: z.array(zDocumentResponse),
})
/**
* DatasetMetadataListItemResponse
*/
export const zDatasetMetadataListItemResponse = z.object({
count: z.int().optional().default(0),
id: z.string(),
name: z.string(),
type: z.string(),
})
/**
* DatasetMetadataListResponse
*/
export const zDatasetMetadataListResponse = z.object({
built_in_field_enabled: z.boolean(),
doc_metadata: z.array(zDatasetMetadataListItemResponse),
})
export const zAppDetailKernel = z.object({
description: z.string().optional(),
icon: z.string().optional(),
@@ -966,9 +1008,9 @@ export const zPostDatasetsInitBody = zKnowledgeConfig
export const zPostDatasetsInitResponse = zDatasetAndDocumentResponse
/**
* Success
* Built-in fields retrieved successfully
*/
export const zGetDatasetsMetadataBuiltInResponse = z.record(z.string(), z.unknown())
export const zGetDatasetsMetadataBuiltInResponse = zDatasetMetadataBuiltInFieldsResponse
/**
* Success
@@ -1149,9 +1191,9 @@ export const zPostDatasetsByDatasetIdDocumentsMetadataPath = z.object({
})
/**
* Success
* Documents metadata updated successfully
*/
export const zPostDatasetsByDatasetIdDocumentsMetadataResponse = zSimpleResultResponse
export const zPostDatasetsByDatasetIdDocumentsMetadataResponse = z.record(z.string(), z.never())
export const zPatchDatasetsByDatasetIdDocumentsStatusByActionBatchPath = z.object({
action: z.string(),
@@ -1566,9 +1608,9 @@ export const zGetDatasetsByDatasetIdMetadataPath = z.object({
})
/**
* Success
* Metadata retrieved successfully
*/
export const zGetDatasetsByDatasetIdMetadataResponse = z.record(z.string(), z.unknown())
export const zGetDatasetsByDatasetIdMetadataResponse = zDatasetMetadataListResponse
export const zPostDatasetsByDatasetIdMetadataBody = zMetadataArgs
@@ -1577,9 +1619,9 @@ export const zPostDatasetsByDatasetIdMetadataPath = z.object({
})
/**
* Success
* Metadata created successfully
*/
export const zPostDatasetsByDatasetIdMetadataResponse = z.record(z.string(), z.unknown())
export const zPostDatasetsByDatasetIdMetadataResponse = zDatasetMetadataResponse
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionPath = z.object({
action: z.string(),
@@ -1587,9 +1629,12 @@ export const zPostDatasetsByDatasetIdMetadataBuiltInByActionPath = z.object({
})
/**
* Success
* Action completed successfully
*/
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionResponse = zSimpleResultResponse
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionResponse = z.record(
z.string(),
z.never(),
)
export const zDeleteDatasetsByDatasetIdMetadataByMetadataIdPath = z.object({
dataset_id: z.string(),
@@ -1612,12 +1657,9 @@ export const zPatchDatasetsByDatasetIdMetadataByMetadataIdPath = z.object({
})
/**
* Success
* Metadata updated successfully
*/
export const zPatchDatasetsByDatasetIdMetadataByMetadataIdResponse = z.record(
z.string(),
z.unknown(),
)
export const zPatchDatasetsByDatasetIdMetadataByMetadataIdResponse = zDatasetMetadataResponse
export const zGetDatasetsByDatasetIdNotionSyncPath = z.object({
dataset_id: z.string(),

View File

@@ -1634,16 +1634,10 @@ export const byAction3 = {
* Get all built-in metadata fields
*
* Get all built-in metadata fields
*
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const get15 = oc
.route({
deprecated: true,
description:
'Get all built-in metadata fields\n\nGenerated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
description: 'Get all built-in metadata fields',
inputStructure: 'detailed',
method: 'GET',
operationId: 'getDatasetsByDatasetIdMetadataBuiltIn',
@@ -1682,16 +1676,10 @@ export const delete7 = oc
* Update metadata name
*
* Update metadata name
*
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const patch5 = oc
.route({
deprecated: true,
description:
'Update metadata name\n\nGenerated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
description: 'Update metadata name',
inputStructure: 'detailed',
method: 'PATCH',
operationId: 'patchDatasetsByDatasetIdMetadataByMetadataId',
@@ -1716,16 +1704,10 @@ export const byMetadataId = {
* Get all metadata for a dataset
*
* Get all metadata for a dataset
*
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const get16 = oc
.route({
deprecated: true,
description:
'Get all metadata for a dataset\n\nGenerated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
description: 'Get all metadata for a dataset',
inputStructure: 'detailed',
method: 'GET',
operationId: 'getDatasetsByDatasetIdMetadata',
@@ -1740,16 +1722,10 @@ export const get16 = oc
* Create metadata for a dataset
*
* Create metadata for a dataset
*
* Generated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.
*
* @deprecated
*/
export const post28 = oc
.route({
deprecated: true,
description:
'Create metadata for a dataset\n\nGenerated contract types may be inaccurate because backend OpenAPI annotations are incomplete. Do not migrate callers until the generated contract is accurate.',
description: 'Create metadata for a dataset',
inputStructure: 'detailed',
method: 'POST',
operationId: 'postDatasetsByDatasetIdMetadata',

View File

@@ -172,6 +172,37 @@ export type DatasetListQuery = {
tag_ids?: Array<string>
}
export type DatasetMetadataActionResponse = {
result: string
}
export type DatasetMetadataBuiltInFieldResponse = {
name: string
type: string
}
export type DatasetMetadataBuiltInFieldsResponse = {
fields: Array<DatasetMetadataBuiltInFieldResponse>
}
export type DatasetMetadataListItemResponse = {
count?: number
id: string
name: string
type: string
}
export type DatasetMetadataListResponse = {
built_in_field_enabled: boolean
doc_metadata: Array<DatasetMetadataListItemResponse>
}
export type DatasetMetadataResponse = {
id: string
name: string
type: string
}
export type DatasetPermissionEnum = 'all_team_members' | 'only_me' | 'partial_members'
export type DatasetUpdatePayload = {
@@ -1666,7 +1697,7 @@ export type PostDatasetsByDatasetIdDocumentsMetadataError
= PostDatasetsByDatasetIdDocumentsMetadataErrors[keyof PostDatasetsByDatasetIdDocumentsMetadataErrors]
export type PostDatasetsByDatasetIdDocumentsMetadataResponses = {
200: SimpleResultResponse
200: DatasetMetadataActionResponse
}
export type PostDatasetsByDatasetIdDocumentsMetadataResponse
@@ -2349,9 +2380,7 @@ export type GetDatasetsByDatasetIdMetadataError
= GetDatasetsByDatasetIdMetadataErrors[keyof GetDatasetsByDatasetIdMetadataErrors]
export type GetDatasetsByDatasetIdMetadataResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataListResponse
}
export type GetDatasetsByDatasetIdMetadataResponse
@@ -2379,9 +2408,7 @@ export type PostDatasetsByDatasetIdMetadataError
= PostDatasetsByDatasetIdMetadataErrors[keyof PostDatasetsByDatasetIdMetadataErrors]
export type PostDatasetsByDatasetIdMetadataResponses = {
201: {
[key: string]: unknown
}
201: DatasetMetadataResponse
}
export type PostDatasetsByDatasetIdMetadataResponse
@@ -2406,9 +2433,7 @@ export type GetDatasetsByDatasetIdMetadataBuiltInError
= GetDatasetsByDatasetIdMetadataBuiltInErrors[keyof GetDatasetsByDatasetIdMetadataBuiltInErrors]
export type GetDatasetsByDatasetIdMetadataBuiltInResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataBuiltInFieldsResponse
}
export type GetDatasetsByDatasetIdMetadataBuiltInResponse
@@ -2437,7 +2462,7 @@ export type PostDatasetsByDatasetIdMetadataBuiltInByActionError
= PostDatasetsByDatasetIdMetadataBuiltInByActionErrors[keyof PostDatasetsByDatasetIdMetadataBuiltInByActionErrors]
export type PostDatasetsByDatasetIdMetadataBuiltInByActionResponses = {
200: SimpleResultResponse
200: DatasetMetadataActionResponse
}
export type PostDatasetsByDatasetIdMetadataBuiltInByActionResponse
@@ -2497,9 +2522,7 @@ export type PatchDatasetsByDatasetIdMetadataByMetadataIdError
= PatchDatasetsByDatasetIdMetadataByMetadataIdErrors[keyof PatchDatasetsByDatasetIdMetadataByMetadataIdErrors]
export type PatchDatasetsByDatasetIdMetadataByMetadataIdResponses = {
200: {
[key: string]: unknown
}
200: DatasetMetadataResponse
}
export type PatchDatasetsByDatasetIdMetadataByMetadataIdResponse

View File

@@ -209,6 +209,55 @@ export const zDatasetListQuery = z.object({
tag_ids: z.array(z.string()).optional(),
})
/**
* DatasetMetadataActionResponse
*/
export const zDatasetMetadataActionResponse = z.object({
result: z.string(),
})
/**
* DatasetMetadataBuiltInFieldResponse
*/
export const zDatasetMetadataBuiltInFieldResponse = z.object({
name: z.string(),
type: z.string(),
})
/**
* DatasetMetadataBuiltInFieldsResponse
*/
export const zDatasetMetadataBuiltInFieldsResponse = z.object({
fields: z.array(zDatasetMetadataBuiltInFieldResponse),
})
/**
* DatasetMetadataListItemResponse
*/
export const zDatasetMetadataListItemResponse = z.object({
count: z.int().optional().default(0),
id: z.string(),
name: z.string(),
type: z.string(),
})
/**
* DatasetMetadataListResponse
*/
export const zDatasetMetadataListResponse = z.object({
built_in_field_enabled: z.boolean(),
doc_metadata: z.array(zDatasetMetadataListItemResponse),
})
/**
* DatasetMetadataResponse
*/
export const zDatasetMetadataResponse = z.object({
id: z.string(),
name: z.string(),
type: z.string(),
})
/**
* DatasetPermissionEnum
*/
@@ -1160,7 +1209,7 @@ export const zPostDatasetsByDatasetIdDocumentsMetadataPath = z.object({
/**
* Documents metadata updated successfully
*/
export const zPostDatasetsByDatasetIdDocumentsMetadataResponse = zSimpleResultResponse
export const zPostDatasetsByDatasetIdDocumentsMetadataResponse = zDatasetMetadataActionResponse
export const zPatchDatasetsByDatasetIdDocumentsStatusByActionPath = z.object({
action: z.string(),
@@ -1453,7 +1502,7 @@ export const zGetDatasetsByDatasetIdMetadataPath = z.object({
/**
* Metadata retrieved successfully
*/
export const zGetDatasetsByDatasetIdMetadataResponse = z.record(z.string(), z.unknown())
export const zGetDatasetsByDatasetIdMetadataResponse = zDatasetMetadataListResponse
export const zPostDatasetsByDatasetIdMetadataBody = zMetadataArgs
@@ -1464,7 +1513,7 @@ export const zPostDatasetsByDatasetIdMetadataPath = z.object({
/**
* Metadata created successfully
*/
export const zPostDatasetsByDatasetIdMetadataResponse = z.record(z.string(), z.unknown())
export const zPostDatasetsByDatasetIdMetadataResponse = zDatasetMetadataResponse
export const zGetDatasetsByDatasetIdMetadataBuiltInPath = z.object({
dataset_id: z.string(),
@@ -1473,7 +1522,7 @@ export const zGetDatasetsByDatasetIdMetadataBuiltInPath = z.object({
/**
* Built-in fields retrieved successfully
*/
export const zGetDatasetsByDatasetIdMetadataBuiltInResponse = z.record(z.string(), z.unknown())
export const zGetDatasetsByDatasetIdMetadataBuiltInResponse = zDatasetMetadataBuiltInFieldsResponse
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionPath = z.object({
action: z.string(),
@@ -1483,7 +1532,8 @@ export const zPostDatasetsByDatasetIdMetadataBuiltInByActionPath = z.object({
/**
* Action completed successfully
*/
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionResponse = zSimpleResultResponse
export const zPostDatasetsByDatasetIdMetadataBuiltInByActionResponse
= zDatasetMetadataActionResponse
export const zDeleteDatasetsByDatasetIdMetadataByMetadataIdPath = z.object({
dataset_id: z.string(),
@@ -1508,10 +1558,7 @@ export const zPatchDatasetsByDatasetIdMetadataByMetadataIdPath = z.object({
/**
* Metadata updated successfully
*/
export const zPatchDatasetsByDatasetIdMetadataByMetadataIdResponse = z.record(
z.string(),
z.unknown(),
)
export const zPatchDatasetsByDatasetIdMetadataByMetadataIdResponse = zDatasetMetadataResponse
export const zGetDatasetsByDatasetIdPipelineDatasourcePluginsPath = z.object({
dataset_id: z.string(),