mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-03-11 08:10:06 +00:00
Unify response models, add missing fields, and align input schemas with the cloud OpenAPI spec at cloud.comfy.org/openapi. - Replace AssetSummary/AssetDetail/AssetUpdated with single Asset model - Add is_immutable, metadata (system_metadata), prompt_id fields - Support mime_type and preview_id in update endpoint - Make CreateFromHashBody.name optional, add mime_type, require >=1 tag - Add id/mime_type/preview_id to upload, relax tags to optional - Rename total_tags → tags in tag add/remove responses - Add GET /api/assets/tags/refine histogram endpoint - Add DB migration for system_metadata and prompt_id columns Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
69 lines
1.7 KiB
Python
69 lines
1.7 KiB
Python
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field, field_serializer
|
|
|
|
|
|
class Asset(BaseModel):
|
|
id: str
|
|
name: str
|
|
asset_hash: str | None = None
|
|
size: int = 0
|
|
mime_type: str | None = None
|
|
tags: list[str] = Field(default_factory=list)
|
|
preview_url: str | None = None
|
|
preview_id: str | None = None
|
|
user_metadata: dict[str, Any] = Field(default_factory=dict)
|
|
is_immutable: bool = False
|
|
metadata: dict[str, Any] | None = None
|
|
prompt_id: str | None = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
last_access_time: datetime | None = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
@field_serializer("created_at", "updated_at", "last_access_time")
|
|
def _serialize_datetime(self, v: datetime | None, _info):
|
|
return v.isoformat() if v else None
|
|
|
|
|
|
class AssetCreated(Asset):
|
|
created_new: bool
|
|
|
|
|
|
class AssetsList(BaseModel):
|
|
assets: list[Asset]
|
|
total: int
|
|
has_more: bool
|
|
|
|
|
|
class TagUsage(BaseModel):
|
|
name: str
|
|
count: int
|
|
type: str
|
|
|
|
|
|
class TagsList(BaseModel):
|
|
tags: list[TagUsage] = Field(default_factory=list)
|
|
total: int
|
|
has_more: bool
|
|
|
|
|
|
class TagsAdd(BaseModel):
|
|
model_config = ConfigDict(str_strip_whitespace=True)
|
|
added: list[str] = Field(default_factory=list)
|
|
already_present: list[str] = Field(default_factory=list)
|
|
tags: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class TagsRemove(BaseModel):
|
|
model_config = ConfigDict(str_strip_whitespace=True)
|
|
removed: list[str] = Field(default_factory=list)
|
|
not_present: list[str] = Field(default_factory=list)
|
|
tags: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class TagHistogram(BaseModel):
|
|
tag_counts: dict[str, int]
|