// @ts-nocheck — generated from scribe-admin OpenAPI; reference only /** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/api/admin/v1/dimzou/documents": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [文档监控] 文档列表 */ get: { parameters: { query?: { /** * @description 可选。按状态过滤: active(活跃), archived(已归档), trashed(回收站), all(默认)。 示例: active * @example architecto */ state?: string; /** * @description 可选。按所有者过滤。 示例: 01HXXXX * @example architecto */ owner_uid?: string; /** * @description 可选。按标题模糊搜索。 示例: 旅行 * @example architecto */ q?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example trashed * @enum {string|null} */ state?: "active" | "archived" | "trashed" | "all" | null; /** @example architecto */ owner_uid?: string | null; /** * @description Must not be greater than 100 characters. * @example n */ q?: string | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "dimzou_document", * "id": 16, * "title": "三天短途旅行打包清单", * "owner": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "category": { * "id": "9f1c...", * "name": "生活" * }, * "state": "active", * "versions_count": 2, * "published_version": 1, * "draft_version": 2, * "archived_at": null, * "deleted_at": null, * "created_at": "2026-06-20T05:00:00Z", * "updated_at": "2026-06-21T05:00:00Z" * } * ] */ data?: { /** @example dimzou_document */ kind?: string; /** @example 16 */ id?: number; /** @example 三天短途旅行打包清单 */ title?: string; owner?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; category?: { /** @example 9f1c... */ id?: string; /** @example 生活 */ name?: string; }; /** @example active */ state?: string; /** @example 2 */ versions_count?: number; /** @example 1 */ published_version?: number; /** @example 2 */ draft_version?: number; /** @example null */ archived_at?: string; /** @example null */ deleted_at?: string; /** @example 2026-06-20T05:00:00Z */ created_at?: string; /** @example 2026-06-21T05:00:00Z */ updated_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/dimzou/documents/{id}": { parameters: { query?: never; header?: never; path: { /** * @description 文档 ID。 * @example 16 */ id: number; }; cookie?: never; }; /** * [文档监控] 文档详情 * @description 含版本列表、译文列表与待审计数。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 文档 ID。 * @example 16 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example dimzou_document */ kind?: string; /** @example 16 */ id?: number; /** @example 三天短途旅行打包清单 */ title?: string; /** @example active */ state?: string; /** @example [] */ versions?: unknown[]; /** * @example [ * { * "id": 4, * "language_code": "en", * "status": "draft", * "translated_document_id": 17, * "created_by_uid": "01HXXXX", * "created_at": "2026-06-20T05:32:14Z" * } * ] */ translations?: { /** @example 4 */ id?: number; /** @example en */ language_code?: string; /** @example draft */ status?: string; /** @example 17 */ translated_document_id?: number; /** @example 01HXXXX */ created_by_uid?: string; /** @example 2026-06-20T05:32:14Z */ created_at?: string; }[]; /** @example 3 */ pending_revisions_count?: number; /** @example 1 */ pending_join_requests_count?: number; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/dimzou/publications": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [发布监控] 发布列表 */ get: { parameters: { query?: { /** * @description 可选。按可见性过滤: public, group_only。 示例: public * @example architecto */ visibility?: string; /** * @description 可选。按语言过滤。 示例: zh-CN * @example architecto */ language?: string; /** * @description 可选。按源文档过滤。 示例: 16 * @example 16 */ document_id?: number; /** * @description 可选。按标题模糊搜索。 示例: 旅行 * @example architecto */ q?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example group_only * @enum {string|null} */ visibility?: "public" | "group_only" | null; /** * @description Must not be greater than 8 characters. * @example bngzmiyv */ language?: string | null; /** @example 16 */ document_id?: number | null; /** * @description Must not be greater than 100 characters. * @example n */ q?: string | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "dimzou_publication", * "id": 3, * "document_id": 16, * "document_version_id": 20, * "version_number": 1, * "visibility": "public", * "title": "三天短途旅行打包清单", * "summary": "轻装出行指南", * "language": "zh-CN", * "keywords": [ * "旅行" * ], * "published_at": "2026-06-21T05:00:00Z", * "block_count": 12, * "author": { * "uid": "01HXXXX", * "display_name": "Alice" * } * } * ] */ data?: { /** @example dimzou_publication */ kind?: string; /** @example 3 */ id?: number; /** @example 16 */ document_id?: number; /** @example 20 */ document_version_id?: number; /** @example 1 */ version_number?: number; /** @example public */ visibility?: string; /** @example 三天短途旅行打包清单 */ title?: string; /** @example 轻装出行指南 */ summary?: string; /** @example zh-CN */ language?: string; /** * @example [ * "旅行" * ] */ keywords?: string[]; /** @example 2026-06-21T05:00:00Z */ published_at?: string; /** @example 12 */ block_count?: number; author?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/dimzou/translations": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [运营] 译文列表 * @description 分页列出全站译文档,含最新草稿版本的块翻译进度,用于决定是否重新入队翻译。仅平台管理员可用。 */ get: { parameters: { query?: { /** * @description 可选。按目标语言过滤。 示例: fr * @example architecto */ language_code?: string; /** * @description 可选。按状态过滤: draft, awaiting_publish, published。 示例: draft * @example architecto */ status?: string; /** * @description 可选。按源文档过滤。 示例: 1 * @example 16 */ source_document_id?: number; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description Must not be greater than 8 characters. * @example bngzmiyv */ language_code?: string; /** * @example published * @enum {string} */ status?: "draft" | "awaiting_publish" | "published"; /** @example 16 */ source_document_id?: number; /** * @description Must be at least 1. * @example 22 */ page?: number; /** * @description Must be at least 1. Must not be greater than 100. * @example 7 */ page_size?: number; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "dimzou_document_translation", * "id": 1, * "language_code": "fr", * "status": "draft", * "source_document": { * "id": 10, * "title": "家电维修入门" * }, * "translated_document_id": 11, * "created_by_uid": "01HXXXX", * "creator": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "draft_version_id": 5, * "blocks": { * "total": 12, * "needs_translation": 3, * "translation_failed": 1 * }, * "created_at": "2026-06-01T10:00:00Z", * "updated_at": "2026-06-02T10:00:00Z" * } * ] */ data?: { /** @example dimzou_document_translation */ kind?: string; /** @example 1 */ id?: number; /** @example fr */ language_code?: string; /** @example draft */ status?: string; source_document?: { /** @example 10 */ id?: number; /** @example 家电维修入门 */ title?: string; }; /** @example 11 */ translated_document_id?: number; /** @example 01HXXXX */ created_by_uid?: string; creator?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 5 */ draft_version_id?: number; blocks?: { /** @example 12 */ total?: number; /** @example 3 */ needs_translation?: number; /** @example 1 */ translation_failed?: number; }; /** @example 2026-06-01T10:00:00Z */ created_at?: string; /** @example 2026-06-02T10:00:00Z */ updated_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/dimzou/translations/{translation_id}/retranslate": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the translation. * @example 1 */ translation_id: number; /** * @description Translation ID. * @example 1 */ translation: number; }; cookie?: never; }; get?: never; put?: never; /** * [运营] 重新机器翻译 * @description 将译文档最新草稿版本中"待译/失败"的块重新入队翻译。仅平台管理员可用。 */ post: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the translation. * @example 1 */ translation_id: number; /** * @description Translation ID. * @example 1 */ translation: number; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 5 */ translation_version_id?: number; /** @example 12 */ queued_blocks?: number; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example No translation draft to re-translate. */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/category-briefs": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [内容分类简报] 列表 * @description 分页返回分类内容简报(每个分类一份,含子话题/作者/文章聚合计数)。 * 可按 category_id 过滤。需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按所属分类过滤(UUID)。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_category_brief", * "id": "9f1c2d3e-4b5a-6789-0abc-def012345678", * "category_id": "1a2b...", * "description": "家电清洗与维修相关内容", * "target_audience": "有家电保养需求的家庭用户", * "subtopic_count": 12, * "author_count": 3, * "article_count": 40 * } * ] */ data?: { /** @example studio_category_brief */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 1a2b... */ category_id?: string; /** @example 家电清洗与维修相关内容 */ description?: string; /** @example 有家电保养需求的家庭用户 */ target_audience?: string; /** @example 12 */ subtopic_count?: number; /** @example 3 */ author_count?: number; /** @example 40 */ article_count?: number; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [内容分类简报] 创建 * @description 为某个分类新建内容简报。聚合计数(subtopic_count 等)由系统维护,不可写入。 * 需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 所属分类 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id: string; /** * @description 分类内容定位描述。 * @example 家电清洗与维修相关内容 */ description?: string; /** * @description 目标读者。 * @example 有家电保养需求的家庭用户 */ target_audience?: string; /** * @description 内容切入角度列表。 * @example [ * "清洗周期", * "自检清单", * "故障排查" * ] */ content_angles?: string[]; /** * @description 内容风险/合规备注。 * @example 涉及电器安全,需提示断电操作 */ risk_notes?: string; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_category_brief */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 1a2b... */ category_id?: string; /** @example 家电清洗与维修相关内容 */ description?: string; /** @example 0 */ subtopic_count?: number; /** @example 0 */ author_count?: number; /** @example 0 */ article_count?: number; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The category id field is required." * ] */ category_id?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/category-briefs/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category brief. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category brief. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/subtopics": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [子话题] 列表 * @description 分页返回子话题,可按 category_id、status 过滤。需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按所属分类过滤(UUID)。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id?: string; /** * @description 按状态过滤:active, archived。 * @example active */ status?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_subtopic", * "id": "9f1c2d3e-4b5a-6789-0abc-def012345678", * "category_id": "1a2b...", * "title": "空调清洗保养指南", * "target_audience": "家庭用户", * "expandability_score": 80, * "status": "active" * } * ] */ data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 1a2b... */ category_id?: string; /** @example 空调清洗保养指南 */ title?: string; /** @example 家庭用户 */ target_audience?: string; /** @example 80 */ expandability_score?: number; /** @example active */ status?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [子话题] 创建 * @description 在某分类下新建子话题。需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 所属分类 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id: string; /** * @description 子话题标题,最长 255。 * @example 空调清洗保养指南 */ title: string; /** * @description 目标读者。 * @example 家庭用户 */ target_audience?: string; /** * @description 读者痛点。 * @example 不清楚多久该洗一次空调 */ pain_points?: string; /** * @description 内容价值主张。 * @example 给出清洗周期与自检清单 */ content_value?: string; /** * @description 可扩展性评分,0-10。 * @example 8 */ expandability_score?: number; /** * @description 状态:active, archived。默认 active。 * @example active */ status?: string; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 空调清洗保养指南 */ title?: string; /** @example active */ status?: string; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The title field is required." * ] */ title?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/subtopics/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the subtopic. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the subtopic. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/robot-authors": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [机器人作者] 列表 * @description 分页返回机器人作者,附带绑定账号的公开身份(display_name / avatar)与账号级人设 * (persona / 风格 / 发布规则)。可按 user_uid、category_id、subtopic_id、status、source 过滤。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按绑定的机器人账号 uid 过滤。 * @example 01HXXXXAUTHORBOT */ user_uid?: string; /** * @description 按所属分类过滤(UUID)。 * @example 1a2b3c4d-5e6f-7081-9234-abcdef012345 */ category_id?: string; /** * @description 按所属子话题过滤(UUID)。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 按状态过滤:pending, profiling, ready, paused。 * @example ready */ status?: string; /** * @description 按来源过滤:user, category。 * @example category */ source?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_robot_author", * "id": "3c4d5e6f-7081-9234-5abc-def012345678", * "user_uid": "01HXXXXAUTHORBOT", * "category_id": "1a2b...", * "status": "ready", * "source": "category", * "display_name": "家电保养小助手", * "avatar": "https://…/avatar.png", * "persona": "务实、耐心的家电保养老师傅", * "article_style": { * "tone": "亲切" * }, * "image_style": { * "style": "写实" * }, * "publishing_rules": { * "cadence": "每周 2 篇" * } * } * ] */ data?: { /** @example studio_robot_author */ kind?: string; /** @example 3c4d5e6f-7081-9234-5abc-def012345678 */ id?: string; /** @example 01HXXXXAUTHORBOT */ user_uid?: string; /** @example 1a2b... */ category_id?: string; /** @example ready */ status?: string; /** @example category */ source?: string; /** @example 家电保养小助手 */ display_name?: string; /** @example https://…/avatar.png */ avatar?: string; /** @example 务实、耐心的家电保养老师傅 */ persona?: string; article_style?: { /** @example 亲切 */ tone?: string; }; image_style?: { /** @example 写实 */ style?: string; }; publishing_rules?: { /** @example 每周 2 篇 */ cadence?: string; }; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [机器人作者] 创建 * @description 绑定一个机器人账号(必须是 is_robot=true 的用户)作为某分类的内容作者。 * 人设字段(persona / article_style / image_style / publishing_rules)写入账号级 * profile,供该账号的所有作者身份与系列共享。需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 机器人账号 uid(须 is_robot=true)。 * @example 01HXXXXAUTHORBOT */ user_uid: string; /** * @description 所属分类 UUID。 * @example 1a2b3c4d-5e6f-7081-9234-abcdef012345 */ category_id: string; /** * @description 关联子话题 UUID。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 账号人设描述(写入 profile)。 * @example 务实、耐心的家电保养老师傅 */ persona?: string; /** * @description 文章风格配置(写入 profile)。 * @example { * "tone": "亲切", * "length": "1200-1800字" * } */ article_style?: Record; /** * @description 配图风格配置(写入 profile)。 * @example { * "style": "写实", * "palette": "明亮" * } */ image_style?: Record; /** * @description 发布规则(写入 profile)。 * @example { * "cadence": "每周 2 篇" * } */ publishing_rules?: Record; /** * @description 状态:pending, profiling, ready, paused。默认 pending。 * @example ready */ status?: string; /** * @description 来源:user, category。 * @example category */ source?: string; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_robot_author */ kind?: string; /** @example 3c4d5e6f-7081-9234-5abc-def012345678 */ id?: string; /** @example 01HXXXXAUTHORBOT */ user_uid?: string; /** @example ready */ status?: string; /** @example 家电保养小助手 */ display_name?: string; /** @example 务实、耐心的家电保养老师傅 */ persona?: string; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The selected user uid is invalid." * ] */ user_uid?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/robot-authors/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the robot author. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the robot author. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/series": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [文章系列] 列表 * @description 分页返回文章系列,可按 category_id、subtopic_id、robot_author_id、status 过滤。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按所属分类过滤(UUID)。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id?: string; /** * @description 按所属子话题过滤(UUID)。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 按机器人作者过滤(UUID)。 * @example 3c4d5e6f-7081-9234-5abc-def012345678 */ robot_author_id?: string; /** * @description 按状态过滤:planned, in_progress, complete。 * @example in_progress */ status?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_series", * "id": "9f1c2d3e-4b5a-6789-0abc-def012345678", * "category_id": "1a2b...", * "robot_author_id": "3c4d...", * "goal": "系统讲透家用空调清洗保养", * "target_article_count": 8, * "status": "in_progress" * } * ] */ data?: { /** @example studio_series */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 1a2b... */ category_id?: string; /** @example 3c4d... */ robot_author_id?: string; /** @example 系统讲透家用空调清洗保养 */ goal?: string; /** @example 8 */ target_article_count?: number; /** @example in_progress */ status?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [文章系列] 创建 * @description 为某机器人作者在某分类下规划一个文章系列。需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 所属分类 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ category_id: string; /** * @description 机器人作者 UUID。 * @example 3c4d5e6f-7081-9234-5abc-def012345678 */ robot_author_id: string; /** * @description 关联子话题 UUID。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 系列目标。 * @example 系统讲透家用空调清洗保养 */ goal?: string; /** * @description 系列定位。 * @example 面向新手的保姆级实操 */ positioning?: string; /** * @description 目标读者。 * @example 第一次自己清洗空调的家庭用户 */ target_readers?: string; /** * @description 读者阅读旅程。 * @example 从认知清洗必要性到能独立完成 */ reader_journey?: string; /** * @description 计划文章数,>=0。 * @example 8 */ target_article_count?: number; /** * @description 计划中的文章大纲列表。 * @example [ * [] * ] */ planned_articles?: Record[]; /** * @description 状态:planned, in_progress, complete。默认 planned。 * @example planned */ status?: string; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_series */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 系统讲透家用空调清洗保养 */ goal?: string; /** @example planned */ status?: string; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The robot author id field is required." * ] */ robot_author_id?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/series/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the series. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the series. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/articles/{article}/preview": { parameters: { query?: never; header?: never; path: { /** * @description 文章 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ article: string; }; cookie?: never; }; /** * [文章] Dimzou 草稿预览 * @description 渲染文章当前 Dimzou 草稿(无草稿时回退到最新已发布版本)的正文为 HTML, * 连同标题/摘要/封面返回,供后台预览。需要 admin:studio:read 权限,绕过 Dimzou 逐用户读权限。 */ get: operations["Dimzou"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/articles": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [文章] 列表 * @description 分页返回文章,可按 series_id、robot_author_id、category_id、subtopic_id、status 过滤。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按所属系列过滤(UUID)。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ series_id?: string; /** * @description 按机器人作者过滤(UUID)。 * @example 3c4d5e6f-7081-9234-5abc-def012345678 */ robot_author_id?: string; /** * @description 按所属分类过滤(UUID)。 * @example 1a2b3c4d-5e6f-7081-9234-abcdef012345 */ category_id?: string; /** * @description 按所属子话题过滤(UUID)。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 按状态过滤:planned, drafting, drafted, published, scheduled。 * @example drafted */ status?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_article", * "id": "9f1c2d3e-4b5a-6789-0abc-def012345678", * "series_id": "…", * "article_number": 1, * "title": "空调多久洗一次?一篇讲清楚", * "status": "drafted", * "dimzou_document_id": null * } * ] */ data?: { /** @example studio_article */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example … */ series_id?: string; /** @example 1 */ article_number?: number; /** @example 空调多久洗一次?一篇讲清楚 */ title?: string; /** @example drafted */ status?: string; /** @example null */ dimzou_document_id?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [文章] 创建 * @description 在某系列下规划一篇文章。正文(大纲/草稿)由外部 Agent 通过 MCP 工具补全, * 封面/内文图由 Agent 上传。需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 所属系列 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 * 作者、分类与子话题自动继承所属系列,不能由调用方覆盖。 */ series_id: string; /** * @description 系列内序号,>=1。 * @example 1 */ article_number: number; /** * @description 选题/写作计划。 * @example [] */ plan?: Record; /** * @description 文章大纲。 * @example [] */ outline?: Record; /** * @description 标题,最长 255。 * @example 空调多久洗一次?一篇讲清楚 */ title?: string; /** * @description 摘要。 * @example 从健康与能耗角度给出清洗周期建议 */ summary?: string; /** * @description 核心要点列表。 * @example [ * "建议每年清洗 1-2 次", * "自检 3 个信号" * ] */ key_takeaways?: string[]; /** * @description 行动号召文案。 * @example 收藏本文,换季前照着做 */ cta?: string; /** * @description 标签。 * @example [ * "空调", * "清洗", * "家电保养" * ] */ tags?: string[]; /** * @description SEO 关键词。 * @example [ * "空调清洗周期", * "空调多久洗一次" * ] */ seo_keywords?: string[]; /** * @description 封面图生成提示词。 * @example 明亮客厅中清洗空调的写实场景 */ cover_image_prompt?: string; /** * @description 内文配图提示词列表。 * @example [ * "architecto" * ] */ inline_image_prompts?: string[]; /** * @description 状态:planned, drafting, drafted, published, scheduled。默认 planned。 * @example planned */ status?: string; /** * @description 生成所用模型的元信息。 * @example [] */ drafting_model?: Record; /** * @description 发布排期配置。 * @example [] */ publish_schedule?: Record; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_article */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example … */ series_id?: string; /** @example 1 */ article_number?: number; /** @example 空调多久洗一次?一篇讲清楚 */ title?: string; /** @example planned */ status?: string; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The series id field is required." * ] */ series_id?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/articles/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the article. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the article. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/style-presets": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [样式预设] 列表 * @description 分页返回样式预设(文章 / 图片 / 组合),可按 type 过滤。需要 admin:studio:read 权限。 */ get: { parameters: { query?: { /** * @description 按类型过滤:article, image, bundle。 * @example article */ type?: string; /** * @description 每页数量,1-100,默认 20。 * @example 20 */ page_size?: number; /** * @description 页码,默认 1。 * @example 1 */ page?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "studio_style_preset", * "id": "9f1c2d3e-4b5a-6789-0abc-def012345678", * "type": "article", * "name": "口语化科普风", * "payload": { * "tone": "亲切", * "length": "1200-1800字" * } * } * ] */ data?: { /** @example studio_style_preset */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example article */ type?: string; /** @example 口语化科普风 */ name?: string; payload?: { /** @example 亲切 */ tone?: string; /** @example 1200-1800字 */ length?: string; }; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** * [样式预设] 创建 * @description 新建一个可复用的写作/绘图样式预设,供机器人作者与文章生成引用。 * 需要 admin:studio:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 预设类型:article, image, bundle。 * @example article */ type: string; /** * @description 预设名称,最长 255。 * @example 口语化科普风 */ name: string; /** * @description 预设内容(结构随 type 而定)。 * @example { * "tone": "亲切", * "length": "1200-1800字" * } */ payload?: Record; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_style_preset */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example article */ type?: string; /** @example 口语化科普风 */ name?: string; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The selected type is invalid." * ] */ type?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/style-presets/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the style preset. * @example architecto */ id: string; }; cookie?: never; }; /** * 获取详情 * @description 按 UUID 获取单个 Studio 实体,返回其全部属性(含 kind 判别字段)。 * 需要 admin:studio:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the style preset. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example active */ status?: string; /** @example 2026-07-18T09:00:00.000000Z */ created_at?: string; /** @example 2026-07-18T09:00:00.000000Z */ updated_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/category-briefs/{category_brief_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category brief. * @example architecto */ category_brief_id: string; }; cookie?: never; }; get?: never; /** * [内容分类简报] 更新 * @description 部分更新,所有字段均可选。需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category brief. * @example architecto */ category_brief_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 分类内容定位描述。 * @example 家电清洗、保养与维修 */ description?: string; /** * @description 目标读者。 * @example architecto */ target_audience?: string; /** * @description 内容切入角度列表。 * @example [ * "architecto" * ] */ content_angles?: string[]; /** * @description 内容风险/合规备注。 * @example architecto */ risk_notes?: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_category_brief */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 家电清洗、保养与维修 */ description?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category brief. * @example architecto */ category_brief_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/subtopics/{subtopic_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the subtopic. * @example architecto */ subtopic_id: string; }; cookie?: never; }; get?: never; /** * [子话题] 更新 * @description 部分更新,所有字段均可选。需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the subtopic. * @example architecto */ subtopic_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 子话题标题,最长 255。 * @example 空调清洗保养指南(2026 版) */ title?: string; /** * @description 目标读者。 * @example architecto */ target_audience?: string; /** * @description 读者痛点。 * @example architecto */ pain_points?: string; /** * @description 内容价值主张。 * @example architecto */ content_value?: string; /** * @description 可扩展性评分,0-10。 * @example 9 */ expandability_score?: number; /** * @description 状态:active, archived。 * @example archived */ status?: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_subtopic */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example archived */ status?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The selected status is invalid." * ] */ status?: string[]; }; }; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the subtopic. * @example architecto */ subtopic_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/robot-authors/{robot_author_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the robot author. * @example architecto */ robot_author_id: string; }; cookie?: never; }; get?: never; /** * [机器人作者] 更新 * @description 部分更新,所有字段均可选。人设字段(persona / article_style / image_style / * publishing_rules)会同步到账号级 profile。需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the robot author. * @example architecto */ robot_author_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 关联子话题 UUID。 * @example 2b3c4d5e-6f70-8912-3abc-def012345678 */ subtopic_id?: string; /** * @description 账号人设描述(写入 profile)。 * @example 务实、耐心的家电保养老师傅 */ persona?: string; /** * @description 文章风格配置(写入 profile)。 * @example [] */ article_style?: Record; /** * @description 配图风格配置(写入 profile)。 * @example [] */ image_style?: Record; /** * @description 发布规则(写入 profile)。 * @example [] */ publishing_rules?: Record; /** * @description 状态:pending, profiling, ready, paused。 * @example paused */ status?: string; /** * @description 来源:user, category。 * @example category */ source?: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_robot_author */ kind?: string; /** @example 3c4d5e6f-7081-9234-5abc-def012345678 */ id?: string; /** @example paused */ status?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the robot author. * @example architecto */ robot_author_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/series/{series_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the series. * @example architecto */ series_id: string; }; cookie?: never; }; get?: never; /** * [文章系列] 更新 * @description 部分更新,所有字段均可选。需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the series. * @example architecto */ series_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 系列目标。 * @example 系统讲透家用空调清洗保养与选购 */ goal?: string; /** * @description 系列定位。 * @example architecto */ positioning?: string; /** * @description 目标读者。 * @example architecto */ target_readers?: string; /** * @description 读者阅读旅程。 * @example architecto */ reader_journey?: string; /** * @description 计划文章数,>=0。 * @example 10 */ target_article_count?: number; /** * @description 计划中的文章大纲列表。 * @example [ * [] * ] */ planned_articles?: Record[]; /** * @description 状态:planned, in_progress, complete。 * @example complete */ status?: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_series */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example complete */ status?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the series. * @example architecto */ series_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/articles/{article_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the article. * @example architecto */ article_id: string; }; cookie?: never; }; get?: never; /** * [文章] 更新 * @description 部分更新,所有字段均可选。发布态字段(dimzou_document_id 等)由发布流程写入,不可直接更新。 * 需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the article. * @example architecto */ article_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 标题,最长 255。 * @example 空调多久洗一次?看完这篇就懂 */ title?: string; /** * @description 摘要。 * @example architecto */ summary?: string; /** * @description 文章大纲。 * @example [] */ outline?: Record; /** * @description 核心要点列表。 * @example [ * "architecto" * ] */ key_takeaways?: string[]; /** * @description 标签。 * @example [ * "architecto" * ] */ tags?: string[]; /** * @description SEO 关键词。 * @example [ * "architecto" * ] */ seo_keywords?: string[]; /** * @description 状态:planned, drafting, drafted, published, scheduled。 * @example drafted */ status?: string; /** * @description 发布排期配置。 * @example [] */ publish_schedule?: Record; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_article */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example drafted */ status?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "The selected status is invalid." * ] */ status?: string[]; }; }; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the article. * @example architecto */ article_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/style-presets/{style_preset_id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the style preset. * @example architecto */ style_preset_id: string; }; cookie?: never; }; get?: never; /** * [样式预设] 更新 * @description 部分更新,所有字段均可选。需要 admin:studio:manage 权限。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the style preset. * @example architecto */ style_preset_id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 预设类型:article, image, bundle。 * @example article */ type?: string; /** * @description 预设名称,最长 255。 * @example 口语化科普风(精简版) */ name?: string; /** * @description 预设内容(结构随 type 而定)。 * @example [] */ payload?: Record; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_style_preset */ kind?: string; /** @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ id?: string; /** @example 口语化科普风(精简版) */ name?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; }; }; }; }; }; post?: never; /** * 删除 * @description 按 UUID 删除单个 Studio 实体。需要 admin:studio:manage 权限。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the style preset. * @example architecto */ style_preset_id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/agent/tokens": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** 查看当前有效的 Agent token 列表 */ get: operations["AgentToken"]; put?: never; /** * 签发新的 Agent token * @description 返回的 access_token 仅此一次完整展示;配置到 Agent 的 MCP client * 后即可访问 POST /mcp/studio。 */ post: operations["AgentToken"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/studio/agent/tokens/{tokenId}": { parameters: { query?: never; header?: never; path: { /** @example architecto */ tokenId: string; }; cookie?: never; }; get?: never; put?: never; post?: never; /** 吊销一个 Agent token */ delete: operations["AgentToken"]; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/demands": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [需求监控] 需求列表 */ get: { parameters: { query?: { /** * @description 可选。按状态过滤: draft, open, quotation_closed, order_placed, fulfilled, broadcasting, matched, converted, expired, canceled。 示例: open * @example architecto */ status?: string; /** * @description 可选。按派单模式过滤: instant_accept, quote, scheduled_booking, manual_selection。 示例: instant_accept * @example architecto */ dispatch_mode?: string; /** * @description 可选。按买家过滤。 示例: 01HXXXX * @example architecto */ user_uid?: string; /** * @description 可选。按标题模糊搜索。 示例: 空调 * @example architecto */ q?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** @example architecto */ status?: string | null; /** * @example scheduled_booking * @enum {string|null} */ dispatch_mode?: "instant_accept" | "quote" | "scheduled_booking" | "manual_selection" | null; /** @example null */ user_uid?: string | null; /** * @description Must not be greater than 100 characters. * @example n */ q?: string | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "service_demand", * "id": 1, * "title": "清洗空调", * "status": "broadcasting", * "dispatch_mode": "instant_accept", * "service_type": "onsite", * "buyer": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "category_id": "9f1c...", * "currency_code": "CNY", * "ref_amount": 15000, * "matched_provider_uid": null, * "matched_at": null, * "quotes_count": 0, * "dispatches_count": 6, * "required_at": "2026-07-12T10:00:00Z", * "published_at": "2026-07-11T09:00:00Z", * "created_at": "2026-07-11T08:00:00Z" * } * ] */ data?: { /** @example service_demand */ kind?: string; /** @example 1 */ id?: number; /** @example 清洗空调 */ title?: string; /** @example broadcasting */ status?: string; /** @example instant_accept */ dispatch_mode?: string; /** @example onsite */ service_type?: string; buyer?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 9f1c... */ category_id?: string; /** @example CNY */ currency_code?: string; /** @example 15000 */ ref_amount?: number; /** @example null */ matched_provider_uid?: string; /** @example null */ matched_at?: string; /** @example 0 */ quotes_count?: number; /** @example 6 */ dispatches_count?: number; /** @example 2026-07-12T10:00:00Z */ required_at?: string; /** @example 2026-07-11T09:00:00Z */ published_at?: string; /** @example 2026-07-11T08:00:00Z */ created_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/demands/{id}": { parameters: { query?: never; header?: never; path: { /** * @description 需求 ID。 * @example 1 */ id: number; }; cookie?: never; }; /** * [需求监控] 需求详情 * @description 含关联服务、报价与派单明细。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 需求 ID。 * @example 1 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example service_demand */ kind?: string; /** @example 1 */ id?: number; /** @example 清洗空调 */ title?: string; /** @example matched */ status?: string; /** @example 两台挂机深度清洗 */ summary?: string; address?: { /** @example 广州 */ city?: string; }; /** @example 23.1291 */ lat?: number; /** @example 113.2644 */ lng?: number; /** @example 90 */ duration?: number; /** @example null */ quote_deadline?: string; /** @example [] */ related_services?: unknown[]; /** @example [] */ quotes?: unknown[]; /** * @example [ * { * "id": 3, * "provider": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "round_no": 1, * "status": "accepted", * "score": 0.87, * "responded_at": "2026-07-11T09:01:00Z" * } * ] */ dispatches?: { /** @example 3 */ id?: number; provider?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example 1 */ round_no?: number; /** @example accepted */ status?: string; /** @example 0.87 */ score?: number; /** @example 2026-07-11T09:01:00Z */ responded_at?: string; }[]; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/dispatches": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [派单监控] 派单列表 */ get: { parameters: { query?: { /** * @description 可选。按状态过滤: sent, delivered, viewed, accepted, rejected, ignored, expired, taken_by_other。 示例: accepted * @example architecto */ status?: string; /** * @description 可选。按需求过滤。 示例: 1 * @example 16 */ demand_id?: number; /** * @description 可选。按服务商过滤。 示例: 01HYYYY * @example architecto */ provider_uid?: string; /** * @description 可选。按轮次过滤。 示例: 1 * @example 16 */ round_no?: number; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example sent * @enum {string|null} */ status?: "sent" | "delivered" | "viewed" | "accepted" | "rejected" | "ignored" | "expired" | "taken_by_other" | null; /** @example 16 */ demand_id?: number | null; /** @example null */ provider_uid?: string | null; /** * @description Must be at least 0. * @example 39 */ round_no?: number | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "demand_dispatch", * "id": 3, * "demand": { * "id": 1, * "title": "清洗空调" * }, * "provider": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "round_no": 1, * "status": "accepted", * "score": 0.87, * "similarity": 0.91, * "distance_meters": 1200.5, * "eta_minutes": 15, * "auto_grab_eligible": true, * "sent_at": "2026-07-11T09:00:00Z", * "viewed_at": null, * "responded_at": "2026-07-11T09:01:00Z", * "expires_at": "2026-07-11T09:05:00Z" * } * ] */ data?: { /** @example demand_dispatch */ kind?: string; /** @example 3 */ id?: number; demand?: { /** @example 1 */ id?: number; /** @example 清洗空调 */ title?: string; }; provider?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example 1 */ round_no?: number; /** @example accepted */ status?: string; /** @example 0.87 */ score?: number; /** @example 0.91 */ similarity?: number; /** @example 1200.5 */ distance_meters?: number; /** @example 15 */ eta_minutes?: number; /** @example true */ auto_grab_eligible?: boolean; /** @example 2026-07-11T09:00:00Z */ sent_at?: string; /** @example null */ viewed_at?: string; /** @example 2026-07-11T09:01:00Z */ responded_at?: string; /** @example 2026-07-11T09:05:00Z */ expires_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/orders": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [订单监控] 订单列表 */ get: { parameters: { query?: { /** * @description 可选。按订单状态过滤: created, confirmed, started, consumed, paid, fulfilled, canceled。 示例: paid * @example architecto */ status?: string; /** * @description 可选。按支付状态过滤: UNPAID, PAID。 示例: PAID * @example architecto */ payment_status?: string; /** * @description 可选。按买家过滤。 示例: 01HXXXX * @example architecto */ buyer_uid?: string; /** * @description 可选。按服务商过滤。 示例: 01HYYYY * @example architecto */ provider_uid?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example paid * @enum {string|null} */ status?: "created" | "confirmed" | "started" | "consumed" | "paid" | "fulfilled" | "canceled" | null; /** * @example UNPAID * @enum {string|null} */ payment_status?: "UNPAID" | "PAID" | null; /** @example null */ buyer_uid?: string | null; /** @example null */ provider_uid?: string | null; /** * @description Must be at least 1. * @example 16 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 22 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "service_order", * "id": 1, * "title": "清洗空调", * "status": "paid", * "payment_status": "PAID", * "buyer": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "provider": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "currency_code": "CNY", * "total_amount": 15000, * "actual_total_amount": 15000, * "platform_fee_amount": 1500, * "provider_net_amount": 13500, * "commission_rate": 0.1, * "cancellation_fee_amount": null, * "paid_at": "2026-07-11T12:00:00Z", * "settled_at": null, * "escrow_release_at": "2026-07-14T12:00:00Z", * "escrow_released_at": null, * "order_date": "2026-07-11T10:00:00Z", * "created_at": "2026-07-11T10:00:00Z" * } * ] */ data?: { /** @example service_order */ kind?: string; /** @example 1 */ id?: number; /** @example 清洗空调 */ title?: string; /** @example paid */ status?: string; /** @example PAID */ payment_status?: string; buyer?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; provider?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example CNY */ currency_code?: string; /** @example 15000 */ total_amount?: number; /** @example 15000 */ actual_total_amount?: number; /** @example 1500 */ platform_fee_amount?: number; /** @example 13500 */ provider_net_amount?: number; /** @example 0.1 */ commission_rate?: number; /** @example null */ cancellation_fee_amount?: string; /** @example 2026-07-11T12:00:00Z */ paid_at?: string; /** @example null */ settled_at?: string; /** @example 2026-07-14T12:00:00Z */ escrow_release_at?: string; /** @example null */ escrow_released_at?: string; /** @example 2026-07-11T10:00:00Z */ order_date?: string; /** @example 2026-07-11T10:00:00Z */ created_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/orders/{id}": { parameters: { query?: never; header?: never; path: { /** * @description 订单 ID。 * @example 1 */ id: number; }; cookie?: never; }; /** * [订单监控] 订单详情 * @description 含订单项与状态流转审计记录。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 订单 ID。 * @example 1 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example service_order */ kind?: string; /** @example 1 */ id?: number; /** @example paid */ status?: string; /** @example PAY202607110001 */ pay_order_no?: string; /** @example STRIPE */ paid_channel?: string; /** @example null */ cancellation_fee_due_date?: string; /** @example [] */ items?: unknown[]; /** @example [] */ transactions?: unknown[]; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/providers": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [服务商监控] 服务商列表 */ get: { parameters: { query?: { /** * @description 可选。按在线状态过滤: offline, online, inactive, busy。 示例: online * @example architecto */ status?: string; /** * @description 可选。按是否禁用过滤。 示例: false * @example false */ is_disabled?: boolean; /** * @description 可选。按是否认证过滤。 示例: true * @example false */ is_verified?: boolean; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example offline * @enum {string|null} */ status?: "offline" | "online" | "inactive" | "busy" | null; /** @example false */ is_disabled?: boolean | null; /** @example true */ is_verified?: boolean | null; /** * @description Must be at least 1. * @example 16 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 22 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "provider_profile", * "user": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "status": "online", * "is_disabled": false, * "is_verified": true, * "rating": 4.8, * "completed_jobs": 32, * "online_at": "2026-07-11T08:00:00Z", * "offline_at": null, * "last_location_at": "2026-07-11T09:30:00Z", * "current_service_order_id": null, * "created_at": "2026-06-01T08:00:00Z" * } * ] */ data?: { /** @example provider_profile */ kind?: string; user?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example online */ status?: string; /** @example false */ is_disabled?: boolean; /** @example true */ is_verified?: boolean; /** @example 4.8 */ rating?: number; /** @example 32 */ completed_jobs?: number; /** @example 2026-07-11T08:00:00Z */ online_at?: string; /** @example null */ offline_at?: string; /** @example 2026-07-11T09:30:00Z */ last_location_at?: string; /** @example null */ current_service_order_id?: string; /** @example 2026-06-01T08:00:00Z */ created_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/exc/providers/{uid}": { parameters: { query?: never; header?: never; path: { /** * @description 服务商用户 UID。 * @example 01HYYYY */ uid: string; }; cookie?: never; }; /** * [服务商监控] 服务商详情 * @description 含派单设置与最近状态日志。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 服务商用户 UID。 * @example 01HYYYY */ uid: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example provider_profile */ kind?: string; user?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example online */ status?: string; /** @example 23.1291 */ last_lat?: number; /** @example 113.2644 */ last_lng?: number; /** @example 12.5 */ location_accuracy_m?: number; dispatch_setting?: { /** @example true */ auto_grab_enabled?: boolean; }; /** * @example [ * { * "from_status": "offline", * "to_status": "online", * "reason": null, * "created_at": "2026-07-11T08:00:00Z" * } * ] */ status_logs?: { /** @example offline */ from_status?: string; /** @example online */ to_status?: string; /** @example null */ reason?: string; /** @example 2026-07-11T08:00:00Z */ created_at?: string; }[]; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/file-x/events": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [事件监控] 事件列表 * @description 只读列出全站事件动态,包含被屏蔽(is_blocked)的记录,支持按可见性、作者、屏蔽状态、话题及标题模糊搜索过滤。 */ get: { parameters: { query?: { /** * @description 可选。按可见性过滤: public, friends, private。 示例: public * @example architecto */ visibility?: string; /** * @description 可选。按屏蔽状态过滤: blocked(已屏蔽), visible(未屏蔽), all(默认)。 示例: blocked * @example architecto */ status?: string; /** * @description 可选。按作者过滤。 示例: 01HXXXX * @example architecto */ user_uid?: string; /** * @description 可选。按主话题过滤。 示例: 家政保洁 * @example architecto */ primary_topic?: string; /** * @description 可选。按标题模糊搜索。 示例: 空调 * @example architecto */ q?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example friends * @enum {string|null} */ visibility?: "public" | "friends" | "private" | null; /** * @example blocked * @enum {string|null} */ status?: "blocked" | "visible" | "all" | null; /** @example null */ user_uid?: string | null; /** * @description Must not be greater than 100 characters. * @example b */ primary_topic?: string | null; /** * @description Must not be greater than 100 characters. * @example n */ q?: string | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "filex_event", * "id": 25, * "title": "空调清洗上门服务记录", * "visibility": "public", * "primary_topic": "家政保洁", * "is_blocked": false, * "blocked_at": null, * "blocked_by_uid": null, * "author": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "likes_count": 5, * "comments_count": 3, * "open_reports_count": 0, * "event_day": "2026-07-10", * "created_at": "2026-07-10T09:00:00Z", * "deleted_at": null * } * ] */ data?: { /** @example filex_event */ kind?: string; /** @example 25 */ id?: number; /** @example 空调清洗上门服务记录 */ title?: string; /** @example public */ visibility?: string; /** @example 家政保洁 */ primary_topic?: string; /** @example false */ is_blocked?: boolean; /** @example null */ blocked_at?: string; /** @example null */ blocked_by_uid?: string; author?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 5 */ likes_count?: number; /** @example 3 */ comments_count?: number; /** @example 0 */ open_reports_count?: number; /** @example 2026-07-10 */ event_day?: string; /** @example 2026-07-10T09:00:00Z */ created_at?: string; /** @example null */ deleted_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/file-x/events/{id}": { parameters: { query?: never; header?: never; path: { /** * @description 事件 ID。 * @example 25 */ id: number; }; cookie?: never; }; /** * [事件监控] 事件详情 * @description 含正文、附件、地理位置、话题提取信息及互动/举报统计。可查看被屏蔽或已软删除的事件。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 事件 ID。 * @example 25 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example filex_event */ kind?: string; /** @example 25 */ id?: number; /** @example 空调清洗上门服务记录 */ title?: string; /** @example public */ visibility?: string; /** @example 家政保洁 */ primary_topic?: string; /** @example false */ is_blocked?: boolean; author?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 两台挂机深度清洗 */ content?: string; /** * @example [ * "家政保洁" * ] */ topics?: string[]; /** @example 广州 */ location_name?: string; /** @example 23.13 */ latitude?: number; /** @example 113.26 */ longitude?: number; /** @example [] */ assets?: unknown[]; /** @example null */ deleted_at?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/file-x/reported-events": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [事件审核] 被举报事件列表 * @description 按被举报的事件分组列出举报,附带举报明细与屏蔽状态。 */ get: { parameters: { query?: { /** * @description 可选。按状态过滤: pending(有待处理举报), blocked(已屏蔽), all(默认)。 示例: pending * @example architecto */ status?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example pending * @enum {string|null} */ status?: "pending" | "blocked" | "all" | null; /** * @description Must be at least 1. * @example 16 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 22 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "reported_event", * "id": 25, * "title": "空调清洗上门服务记录", * "visibility": "public", * "is_blocked": false, * "blocked_at": null, * "blocked_by_uid": null, * "author": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "open_reports_count": 2, * "latest_report_at": "2026-07-11T10:10:00Z", * "reports": [ * { * "id": 1, * "reason": "spam", * "message": "疑似虚假事迹", * "status": "open", * "reporter": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "created_at": "2026-07-11T10:10:00Z", * "handled_at": null * } * ], * "created_at": "2026-07-10T09:00:00Z" * } * ] */ data?: { /** @example reported_event */ kind?: string; /** @example 25 */ id?: number; /** @example 空调清洗上门服务记录 */ title?: string; /** @example public */ visibility?: string; /** @example false */ is_blocked?: boolean; /** @example null */ blocked_at?: string; /** @example null */ blocked_by_uid?: string; author?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example 2 */ open_reports_count?: number; /** @example 2026-07-11T10:10:00Z */ latest_report_at?: string; /** * @example [ * { * "id": 1, * "reason": "spam", * "message": "疑似虚假事迹", * "status": "open", * "reporter": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "created_at": "2026-07-11T10:10:00Z", * "handled_at": null * } * ] */ reports?: { /** @example 1 */ id?: number; /** @example spam */ reason?: string; /** @example 疑似虚假事迹 */ message?: string; /** @example open */ status?: string; reporter?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 2026-07-11T10:10:00Z */ created_at?: string; /** @example null */ handled_at?: string; }[]; /** @example 2026-07-10T09:00:00Z */ created_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/file-x/reported-events/{event}": { parameters: { query?: never; header?: never; path: { /** * @description 事件 ID。 * @example 25 */ event: number; }; cookie?: never; }; get?: never; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * [事件审核] 处理被举报事件 * @description approve: 举报成立,屏蔽事件并将其全部待处理举报标记已处理; * reject: 举报不成立,驳回全部待处理举报; * revert: 撤销屏蔽(仅对已屏蔽事件有效),举报记录保留。 */ patch: { parameters: { query?: never; header?: never; path: { /** * @description 事件 ID。 * @example 25 */ event: number; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 处理动作: approve, reject, revert。 * @example approve */ action: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example reported_event */ kind?: string; /** @example 25 */ id?: number; /** @example true */ is_blocked?: boolean; /** @example 2026-07-11T10:20:00Z */ blocked_at?: string; /** @example 01HXXXX */ blocked_by_uid?: string; /** @example 0 */ open_reports_count?: number; }; /** @example 举报已处理 */ message?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "Event is not blocked." * ] */ action?: string[]; }; }; }; }; }; }; }; trace?: never; }; "/api/admin/v1/categories/tree": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get category tree (admin) * @description Returns categories in tree structure with option to include inactive categories. */ get: operations["getCategoryTreeadmin"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/pending": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List pending user-created categories * @description User-created categories awaiting review (approval_status = pending). */ get: operations["listPendingUserCreatedCategories"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{category_id}/approve": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; get?: never; put?: never; /** Approve a pending category (make it public) */ post: operations["approveAPendingCategorymakeItPublic"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{category_id}/reject": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; get?: never; put?: never; /** Reject a public request (keep the category private) */ post: operations["rejectAPublicRequestkeepTheCategoryPrivate"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{category_id}/merge": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; get?: never; put?: never; /** Merge a category into another (preserves both IDs) */ post: operations["mergeACategoryIntoAnotherpreservesBothIDs"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Create category * @description Create a new category. Translations can be added immediately or later via separate endpoints. */ post: operations["createCategory"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{id}": { parameters: { query?: never; header?: never; path: { /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; /** * Get category details * @description Retrieve detailed information about a specific category. */ get: operations["getCategoryDetails"]; /** * Update category * @description Update an existing category with new data and translations. */ put: operations["updateCategory"]; post?: never; /** * Delete category * @description Soft delete a category. Categories with children cannot be deleted. */ delete: operations["deleteCategory"]; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{category_id}/translations": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; /** * List all translations for category * @description Get all translations associated with a specific category. */ get: operations["listAllTranslationsForCategory"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/categories/{category_id}/translations/{locale}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description Locale code (e.g., 'en', 'zh-hans'). * @example sr_BA */ locale: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; /** * Get translation for specific locale * @description Retrieve the translation for a specific category and locale. */ get: operations["getTranslationForSpecificLocale"]; put?: never; /** * Create or update translation for specific locale * @description Add or update a translation for a specific category and locale. */ post: operations["createOrUpdateTranslationForSpecificLocale"]; /** * Delete translation for specific locale * @description Remove the translation for a specific category and locale. */ delete: operations["deleteTranslationForSpecificLocale"]; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/api-docs/public": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** 获取公共 API OpenAPI 文档 */ get: operations["APIOpenAPI"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/api-docs/admin": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** 获取管理端 API OpenAPI 文档 */ get: operations["APIOpenAPI"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/internal-surfaces/{surface}/session": { parameters: { query?: never; header?: never; path: { /** @example architecto */ surface: string; }; cookie?: never; }; get?: never; put?: never; /** * 获取内部工具访问链接 * @description 校验当前管理员是否拥有该工具的权限,并签发一次性入口链接。 */ post: { parameters: { query?: never; header?: never; path: { /** @example architecto */ surface: string; }; cookie?: never; }; requestBody?: never; responses: never; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/notification/push-apps": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** 推送应用列表 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; put?: never; /** 创建推送应用 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: never; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/notification/push-apps/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; /** 推送应用详情 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; /** 更新推送应用 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: never; }; post?: never; /** 删除推送应用 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: never; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/notification/push-apps/{id}/verify": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; get?: never; put?: never; /** * 校验推送应用凭证 * @description 只报告凭证是否可用,不返回文件内容或解析结果。 */ post: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the push app. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: never; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/locales": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** 获取语言列表 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "locale", * "code": "en", * "name": "English", * "native_name": "English", * "is_active": true, * "sort_order": 1, * "created_at": "2024-01-01T00:00:00Z", * "updated_at": "2024-01-01T00:00:00Z" * } * ] */ data?: { /** @example locale */ kind?: string; /** @example en */ code?: string; /** @example English */ name?: string; /** @example English */ native_name?: string; /** @example true */ is_active?: boolean; /** @example 1 */ sort_order?: number; /** @example 2024-01-01T00:00:00Z */ created_at?: string; /** @example 2024-01-01T00:00:00Z */ updated_at?: string; }[]; }; }; }; /** @description unauthorized */ 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHORIZED */ code?: string; /** @example 未授权访问 */ message?: string; }; }; }; }; }; put?: never; /** 创建语言 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 语言代码(BCP-47)。 * @example fr */ code: string; /** * @description 语言名称。 * @example French */ name: string; /** * @description 语言本地名称。 * @example Français */ native_name: string; /** * @description 是否启用。 * @example true */ is_active?: boolean; /** * @description 排序值。 * @example 4 */ sort_order?: number; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example locale */ kind?: string; /** @example fr */ code?: string; /** @example French */ name?: string; /** @example Français */ native_name?: string; /** @example true */ is_active?: boolean; /** @example 4 */ sort_order?: number; /** @example 2024-01-01T00:00:00Z */ created_at?: string; /** @example 2024-01-01T00:00:00Z */ updated_at?: string; }; /** @example 语言已创建。 */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/locales/{code}": { parameters: { query?: never; header?: never; path: { /** * @description 语言代码。 * @example en */ code: string; }; cookie?: never; }; /** 获取语言详情 */ get: { parameters: { query?: never; header?: never; path: { /** * @description 语言代码。 * @example en */ code: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example locale */ kind?: string; /** @example en */ code?: string; /** @example English */ name?: string; /** @example English */ native_name?: string; /** @example true */ is_active?: boolean; /** @example 1 */ sort_order?: number; /** @example 2024-01-01T00:00:00Z */ created_at?: string; /** @example 2024-01-01T00:00:00Z */ updated_at?: string; }; }; }; }; }; }; /** 更新语言 */ put: { parameters: { query?: never; header?: never; path: { /** * @description 语言代码。 * @example en */ code: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 语言名称。 * @example French Updated */ name?: string; /** * @description 本地名称。 * @example Français */ native_name?: string; /** * @description 是否启用。 * @example true */ is_active?: boolean; /** * @description 排序值。 * @example 5 */ sort_order?: number; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example locale */ kind?: string; /** @example fr */ code?: string; /** @example French Updated */ name?: string; /** @example Français */ native_name?: string; /** @example true */ is_active?: boolean; /** @example 5 */ sort_order?: number; /** @example 2024-01-01T00:00:00Z */ created_at?: string; /** @example 2024-01-01T00:00:00Z */ updated_at?: string; }; /** @example 语言已更新。 */ message?: string; }; }; }; }; }; post?: never; /** 删除语言 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description 语言代码。 * @example en */ code: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example 语言已删除。 */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/users/{uid}/info": { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; /** * [用户信息查看] 用户资料详情 * @description 返回用户账号信息、个人资料、工作经历、教育经历、荣誉与地址。 */ get: { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { user?: { /** @example user */ kind?: string; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ uid?: string; /** @example admin@example.com */ email?: string; /** @example true */ status?: boolean; }; profile?: { /** @example user_profile */ kind?: string; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ user_uid?: string; /** @example 张三 */ computed_fullname?: string; }; /** @example [] */ careers?: unknown[]; /** @example [] */ educations?: unknown[]; /** @example [] */ honors?: unknown[]; /** * @example [ * { * "kind": "user_address", * "contact_name": "张三", * "contact_phone_number": "13800000000" * } * ] */ addresses?: { /** @example user_address */ kind?: string; /** @example 张三 */ contact_name?: string; /** @example 13800000000 */ contact_phone_number?: string; }[]; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 您无权访问此资源。 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 用户不存在 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/users/{uid}/services": { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; /** * [提供服务查看] 用户提供的服务 * @description 返回用户全部专长及服务变体,包含已上架与未上架服务。 */ get: { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** * @example [ * { * "id": 1, * "kind": "expertise", * "name": "清洗空调", * "description": "空调深度清洗", * "tags": [ * "家电" * ], * "user_uid": "01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L", * "services": [ * { * "id": 1, * "kind": "expertise_service", * "service_type": "onsite", * "charge_type": "time", * "price": 12900, * "currency_code": "CNY", * "duration": 90, * "enabled": true * } * ] * } * ] */ expertises?: { /** @example 1 */ id?: number; /** @example expertise */ kind?: string; /** @example 清洗空调 */ name?: string; /** @example 空调深度清洗 */ description?: string; /** * @example [ * "家电" * ] */ tags?: string[]; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ user_uid?: string; /** * @example [ * { * "id": 1, * "kind": "expertise_service", * "service_type": "onsite", * "charge_type": "time", * "price": 12900, * "currency_code": "CNY", * "duration": 90, * "enabled": true * } * ] */ services?: { /** @example 1 */ id?: number; /** @example expertise_service */ kind?: string; /** @example onsite */ service_type?: string; /** @example time */ charge_type?: string; /** @example 12900 */ price?: number; /** @example CNY */ currency_code?: string; /** @example 90 */ duration?: number; /** @example true */ enabled?: boolean; }[]; }[]; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 您无权访问此资源。 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 用户不存在 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/rules": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * 规则列表 * @description 获取当前 SID 规则开关列表。 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": 1, * "key": "all_same_letters", * "description": "全相同字母", * "enabled": true * } * ] */ data?: { /** @example 1 */ id?: number; /** @example all_same_letters */ key?: string; /** @example 全相同字母 */ description?: string; /** @example true */ enabled?: boolean; }[]; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/rules/{key}": { parameters: { query?: never; header?: never; path: { /** @example architecto */ key: string; }; cookie?: never; }; get?: never; /** * 更新规则开关 * @description 更新指定 SID 规则开关状态。 */ put: { parameters: { query?: never; header?: never; path: { /** @example architecto */ key: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 是否启用。 * @example false */ enabled: boolean; /** * @description 规则描述。 * @example Eius et animi quos velit et. */ description?: string | null; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 1 */ id?: number; /** @example all_same_letters */ key?: string; /** @example 全相同字母 */ description?: string; /** @example false */ enabled?: boolean; }; }; }; }; }; }; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/lucky-numbers": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * 吉利号列表 * @description 获取已配置的吉利号列表。 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": 1, * "number": "888", * "category": "顶级超级吉利", * "enabled": true * } * ] */ data?: { /** @example 1 */ id?: number; /** @example 888 */ number?: string; /** @example 顶级超级吉利 */ category?: string; /** @example true */ enabled?: boolean; }[]; }; }; }; }; }; put?: never; /** * 新增吉利号 * @description 新增一条吉利号配置。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 3位数字吉利号。 * @example 888 */ number: string; /** * @description 分类标签。 * @example 顶级超级吉利 */ category?: string | null; /** * @description 是否启用。 * @example false */ enabled?: boolean; }; }; }; responses: { /** @description success */ 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 10 */ id?: number; /** @example 888 */ number?: string; /** @example 顶级超级吉利 */ category?: string; /** @example true */ enabled?: boolean; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/lucky-numbers/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the lucky number. * @example architecto */ id: string; }; cookie?: never; }; get?: never; /** * 更新吉利号 * @description 更新吉利号的状态或分类。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the lucky number. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 分类标签。 * @example architecto */ category?: string | null; /** * @description 是否启用。 * @example false */ enabled?: boolean; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 10 */ id?: number; /** @example 888 */ number?: string; /** @example 顶级超级吉利 */ category?: string; /** @example false */ enabled?: boolean; }; }; }; }; }; }; post?: never; /** * 删除吉利号 * @description 删除指定吉利号。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the lucky number. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/check": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * 校验 SID 是否保留 * @description 判断 SID 是否命中保留规则。 */ post: operations["SID"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/sid/assign": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * [用户SID] 分配用户 SID * @description 管理员为用户分配或覆盖 SID。 */ post: operations["SIDSID"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/users": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [用户管理] 用户列表 * @description 分页返回平台用户列表,支持关键字、状态、机器人账号与角色过滤。 */ get: { parameters: { query?: { /** * @description 可选。按邮箱/用户名/昵称/手机号/UID/SID 模糊搜索。 示例: admin * @example architecto */ q?: string; /** * @description 可选。按启用状态过滤(1/0)。 示例: 1 * @example false */ status?: boolean; /** * @description 可选。按是否机器人账号过滤(1/0)。 示例: 1 * @example false */ is_robot?: boolean; /** * @description 可选。按角色名精确过滤。 示例: service-provider * @example architecto */ role?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description Must not be greater than 100 characters. * @example b */ q?: string | null; /** @example true */ status?: boolean | null; /** @example true */ is_robot?: boolean | null; /** * @description Must not be greater than 100 characters. * @example n */ role?: string | null; /** * @description Must be at least 1. * @example 67 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 16 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "user", * "uid": "01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L", * "sid": "ABC168888", * "sid_display": "ABC-168888", * "username": "admin", * "display_name": "管理员", * "email": "admin@example.com", * "phone": "+1234567890", * "country_code": "USA", * "avatar": null, * "expertise": "平台管理", * "city": "旧金山", * "timezone": "America/Los_Angeles", * "timezone_offset": -480, * "locale": null, * "status": true, * "is_robot": false, * "email_verified_at": "2026-07-11T09:00:00.000000Z", * "phone_verified_at": null, * "roles": [ * "admin" * ], * "created_at": "2026-07-11T08:00:00.000000Z", * "updated_at": "2026-07-11T08:00:00.000000Z" * } * ] */ data?: { /** @example user */ kind?: string; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ uid?: string; /** @example ABC168888 */ sid?: string; /** @example ABC-168888 */ sid_display?: string; /** @example admin */ username?: string; /** @example 管理员 */ display_name?: string; /** @example admin@example.com */ email?: string; /** @example +1234567890 */ phone?: string; /** @example USA */ country_code?: string; /** @example null */ avatar?: string; /** @example 平台管理 */ expertise?: string; /** @example 旧金山 */ city?: string; /** @example America/Los_Angeles */ timezone?: string; /** @example -480 */ timezone_offset?: number; /** @example null */ locale?: string; /** @example true */ status?: boolean; /** @example false */ is_robot?: boolean; /** @example 2026-07-11T09:00:00.000000Z */ email_verified_at?: string; /** @example null */ phone_verified_at?: string; /** * @example [ * "admin" * ] */ roles?: string[]; /** @example 2026-07-11T08:00:00.000000Z */ created_at?: string; /** @example 2026-07-11T08:00:00.000000Z */ updated_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 您无权访问此资源。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/users/{uid}": { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; /** * [用户管理] 用户详情 * @description 返回指定用户的完整信息,包括邮箱、手机号、验证状态与角色。 */ get: { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example user */ kind?: string; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ uid?: string; /** @example ABC168888 */ sid?: string; /** @example ABC-168888 */ sid_display?: string; /** @example admin */ username?: string; /** @example 管理员 */ display_name?: string; /** @example admin@example.com */ email?: string; /** @example +1234567890 */ phone?: string; /** @example USA */ country_code?: string; /** @example null */ avatar?: string; /** @example 平台管理 */ expertise?: string; /** @example 旧金山 */ city?: string; /** @example America/Los_Angeles */ timezone?: string; /** @example -480 */ timezone_offset?: number; /** @example null */ locale?: string; /** @example true */ status?: boolean; /** @example false */ is_robot?: boolean; /** @example 2026-07-11T09:00:00.000000Z */ email_verified_at?: string; /** @example null */ phone_verified_at?: string; /** * @example [ * "admin" * ] */ roles?: string[]; /** @example 2026-07-11T08:00:00.000000Z */ created_at?: string; /** @example 2026-07-11T08:00:00.000000Z */ updated_at?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 用户不存在 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/users/{uid}/status": { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; get?: never; /** * [用户管理] 启用/禁用用户 * @description 更新用户启用状态。禁用用户时,其全部有效访问令牌将被吊销, * 且无法再通过密码或验证码登录;重新启用后恢复登录能力。 */ put: { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 是否启用。 * @example false */ status: boolean; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example user */ kind?: string; /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ uid?: string; /** @example false */ status?: boolean; /** @example [] */ roles?: unknown[]; }; /** @example 用户状态更新成功 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 用户不存在 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example 数据验证失败 */ message?: string; data?: { errors?: { /** * @example [ * "不能禁用当前登录的管理员账号" * ] */ uid?: string[]; }; }; }; }; }; }; }; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * 查询批量导入历史 * @description 需要 admin:resume:read 权限。 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": "01K9ZC0J8N7Q2W5X3Y6R4T8V1B", * "kind": "resume-import-batch", * "status": "completed", * "counts": { * "created": 141, * "skipped_duplicate": 38 * } * } * ] */ data?: { /** @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ id?: string; /** @example resume-import-batch */ kind?: string; /** @example completed */ status?: string; counts?: { /** @example 141 */ created?: number; /** @example 38 */ skipped_duplicate?: number; }; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; /** @example 获取批量导入列表成功。 */ message?: string; }; }; }; }; }; put?: never; /** * 创建批量导入任务 * @description 上传 ZIP 压缩包,立即返回 202 与批次记录,随后轮询批次详情查看进度。 * 压缩包会在后台解包,每份简历生成一条导入记录。 * * 建议先用 `dryRun=true` 试运行:只统计将会创建 / 跳过的数量,不写入任何用户。 * * 需要 admin:resume:manage 权限。 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "multipart/form-data": { /** * Format: binary * @description 包含多份简历的 ZIP 压缩包。. Must be a file. Must not be greater than 51200 kilobytes. */ archive: string; /** * @description ISO 3166-1 alpha-3 国家代码,用于解析简历中缺少国际区号的手机号。默认 CHN。. Must be 3 characters. * @example CHN */ countryCode?: string | null; /** * @description 可选的语言提示。. Must not be greater than 16 characters. * @example zh */ languageHint?: string | null; /** * @description 可选的简历结构版本号。. Must not be greater than 16 characters. * @example 1.0 */ schemaVersion?: string | null; /** * @description 试运行:解析并统计结果,但不创建任何用户。确认后再调用 confirm 接口。. * @example false */ dryRun?: boolean | null; }; }; }; responses: { /** @description idempotent_replay */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ id?: string; /** @example processing */ status?: string; }; /** @example 简历批量导入任务已创建。 */ message?: string; }; }; }; /** @description queued */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ id?: string; /** @example resume-import-batch */ kind?: string; /** @example queued */ status?: string; /** @example false */ dryRun?: boolean; progress?: { /** @example 0 */ total?: number; /** @example 0 */ processed?: number; /** @example 0 */ percent?: number; }; counts?: Record; archive?: { /** @example resumes.zip */ filename?: string; /** @example 10485760 */ size?: number; }; /** @example /api/admin/v1/resume/import-batches/01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ pollUrl?: string; }; /** @example 简历批量导入任务已创建。 */ message?: string; }; }; }; /** @description unauthenticated */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证访问 */ message?: string; }; }; }; /** @description forbidden */ 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHORIZED */ code?: string; /** @example 无权访问 */ message?: string; }; }; }; /** @description invalid_archive */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The archive must be a file of type: application/zip. */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the import batch. * @example architecto */ id: string; /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; /** * 查询批次进度与统计 * @description 轮询该接口直到 status 为 completed 或 failed。counts 给出各处理结果的数量: * created(已创建)、skipped_duplicate(手机号已存在,跳过)、needs_contact(缺少联系方式)、 * would_create(试运行下将会创建)等。 * * 需要 admin:resume:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the import batch. * @example architecto */ id: string; /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description processing */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ id?: string; /** @example processing */ status?: string; progress?: { /** @example 200 */ total?: number; /** @example 87 */ processed?: number; /** @example 44 */ percent?: number; }; counts?: { /** @example 61 */ created?: number; /** @example 20 */ skipped_duplicate?: number; /** @example 6 */ needs_contact?: number; }; }; /** @example 获取批量导入记录成功。 */ message?: string; }; }; }; /** @description not_found */ 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 记录不存在。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches/{batch}/items": { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; /** * 查询批次内的简历明细 * @description 可按 outcome / status 筛选,例如只看 needs_contact 的记录以便补充联系方式。 * 列表不返回解析结果正文与联系方式,需要时请查询单条明细。 * * 需要 admin:resume:read 权限。 */ get: { parameters: { query?: { /** * @description 页码。. Must be at least 1. * @example 1 */ page?: number | null; /** * @description 每页数量,最大 100。. Must be between 1 and 100. * @example 20 */ page_size?: number | null; /** * @description 按处理结果筛选。. * @example skipped_duplicate */ outcome?: "created" | "would_create" | "skipped_duplicate" | "reused_import" | "needs_contact" | "duplicate_file" | "unsupported_entry" | "entry_too_large" | "parse_failed" | "failed" | null; /** * @description 按解析状态筛选。. * @example completed */ status?: "queued" | "processing" | "completed" | "failed" | null; /** * @description 按文件名模糊搜索。. Must not be greater than 255 characters. * @example zhang */ q?: string | null; }; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": "01K9ZD0J8N7Q2W5X3Y6R4T8V1C", * "kind": "resume-import", * "status": "completed", * "outcome": "skipped_duplicate", * "matchedUserUid": "01HJQYX8RN4M7T5E7S2P9F1V3K", * "document": { * "filename": "zhangsan.pdf" * } * } * ] */ data?: { /** @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ id?: string; /** @example resume-import */ kind?: string; /** @example completed */ status?: string; /** @example skipped_duplicate */ outcome?: string; /** @example 01HJQYX8RN4M7T5E7S2P9F1V3K */ matchedUserUid?: string; document?: { /** @example zhangsan.pdf */ filename?: string; }; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; /** @example 获取批量导入明细成功。 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches/{batch_id}/items/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the batch. * @example architecto */ batch_id: string; /** * @description The ID of the item. * @example architecto */ id: string; /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; /** * @description 简历导入记录 ID。 * @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ item: string; }; cookie?: never; }; /** * 查询单条简历导入明细 * @description 返回完整解析结果,结构与公开接口 /api/v1/resume-parser/imports/{id} 的 result 一致。 * * 需要 admin:resume:read 权限。 */ get: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the batch. * @example architecto */ batch_id: string; /** * @description The ID of the item. * @example architecto */ id: string; /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; /** * @description 简历导入记录 ID。 * @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ item: string; }; cookie?: never; }; requestBody?: never; responses: { 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 记录不存在。 */ message?: string; } | { /** @example false */ success?: boolean; /** @example The requested resource was not found. */ message?: string; /** @example NOT_FOUND */ code?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * 补充联系方式 * @description 用于解决 needs_contact 的记录:提供手机号或邮箱后立即校验是否与已有用户冲突, * 无冲突则排队建号。不会重新解析简历。 * * 需要 admin:resume:manage 权限。 */ patch: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the batch. * @example architecto */ batch_id: string; /** * @description The ID of the item. * @example architecto */ id: string; /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; /** * @description 简历导入记录 ID。 * @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ item: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description 手机号。缺少国际区号时按批次的 countryCode 解析,并统一存储为 E.164 格式。. This field is required when email is not present. Must not be greater than 32 characters. * @example 13800138000 */ phone?: string | null; /** * @description 邮箱地址,当没有手机号时作为身份标识。. This field is required when phone is not present. Must be a valid email address. Must not be greater than 255 characters. * @example zhang@example.com */ email?: string | null; }; }; }; responses: { /** @description queued */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ id?: string; /** @example phone */ identityType?: string; }; /** @example 已重新排队。 */ message?: string; }; }; }; /** @description duplicate */ 409: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example IMPORT_IDENTITY_TAKEN */ code?: string; /** @example 该联系方式已属于其他用户。 */ message?: string; }; }; }; /** @description invalid_phone */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example INVALID_PHONE */ code?: string; /** @example 手机号格式无效。 */ message?: string; }; }; }; }; }; trace?: never; }; "/api/admin/v1/resume/import-batches/{batch}/confirm": { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; get?: never; put?: never; /** * 确认试运行批次 * @description 将 dryRun 批次转为正式导入:为所有 would_create 的记录创建用户。 * 不会重新解析简历(结果已存在),因此不产生额外的模型调用费用。 * * 需要 admin:resume:manage 权限。 */ post: { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description confirmed */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ id?: string; /** @example false */ dryRun?: boolean; }; /** @example 已确认批量导入,正在创建用户。 */ message?: string; }; }; }; /** @description not_dry_run */ 409: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example BATCH_NOT_DRY_RUN */ code?: string; /** @example 该批次不是试运行,无需确认。 */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches/{batch}/retry": { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; get?: never; put?: never; /** * 重试批次内所有失败的简历 * @description 需要 admin:resume:manage 权限。 */ post: { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description requeued */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 3 */ requeued?: number; }; /** @example 已重新排队。 */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/resume/import-batches/{batch}/items/{item}/retry": { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; /** * @description 简历导入记录 ID。 * @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ item: string; }; cookie?: never; }; get?: never; put?: never; /** * 重试单条简历 * @description 会自动判断从哪一步继续:解析失败则重新解析(已提取的正文会复用,不重复产生 OCR 费用), * 仅建号失败则只重新建号。 * * 需要 admin:resume:manage 权限。 */ post: { parameters: { query?: never; header?: never; path: { /** * @description 批次 ID。 * @example 01K9ZC0J8N7Q2W5X3Y6R4T8V1B */ batch: string; /** * @description 简历导入记录 ID。 * @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ item: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description requeued */ 202: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01K9ZD0J8N7Q2W5X3Y6R4T8V1C */ id?: string; /** @example queued */ status?: string; }; /** @example 已重新排队。 */ message?: string; }; }; }; 409: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example IMPORT_NEEDS_CONTACT */ code?: string; /** @example 该简历缺少手机号或邮箱,请先补充联系方式。 */ message?: string; } | { /** @example false */ success?: boolean; /** @example IMPORT_NOT_RETRYABLE */ code?: string; /** @example 只有失败的导入任务可以重试。 */ message?: string; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/login/otp": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * [管理后台] 请求OTP验证码 * @description Request OTP code for admin login via email or SMS */ post: operations["OTP"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/login/verify-otp": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * [管理后台] 验证OTP验证码 * @description Verify OTP code for admin login and return access token */ post: operations["OTP"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/login/password": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * [管理后台] 密码登录 * @description Login admin user with identity and password */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Admin identity (email). * @example admin@example.com */ identity: string; /** * @description Admin password. * @example admin123 */ password: string; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6... */ access_token?: string; /** @example Bearer */ token_type?: string; /** @example 900 */ expires_in?: number; /** @example refresh-token-string */ refresh_token?: string; }; /** @example Admin login successful */ message?: string; }; }; }; /** @description invalid_credentials */ 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example INVALID_CREDENTIALS */ code?: string; /** @example Invalid admin credentials */ message?: string; }; }; }; /** @description validation_error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; data?: { errors?: { /** * @example [ * "Identity is required" * ] */ identity?: string[]; /** * @example [ * "Password is required" * ] */ password?: string[]; }; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/robots/{uid}/token": { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; get?: never; put?: never; /** * [管理后台] 为机器人账号签发会话令牌 * @description 为指定机器人账号签发一组 OAuth 访问令牌和刷新令牌。 */ post: { parameters: { query?: never; header?: never; path: { /** @example architecto */ uid: string; }; cookie?: never; }; requestBody?: never; responses: never; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/me": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get the current admin user with roles and permissions * @description Returns the authenticated user plus their roles and effective permissions * (role-derived + direct) so the admin frontend can render permission-aware UI. */ get: operations["getTheCurrentAdminUserWithRolesAndPermissions"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/roles": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [角色管理] 角色列表 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "role", * "name": "moderator", * "permissions": [ * "admin:comment:read" * ], * "users_count": 1, * "builtin": false * } * ] */ data?: { /** @example role */ kind?: string; /** @example moderator */ name?: string; /** * @example [ * "admin:comment:read" * ] */ permissions?: string[]; /** @example 1 */ users_count?: number; /** @example false */ builtin?: boolean; }[]; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; /** [角色管理] 新建角色 */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 角色名(唯一)。 * @example reviewer */ name: string; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example role */ kind?: string; /** @example reviewer */ name?: string; /** @example [] */ permissions?: unknown[]; /** @example 0 */ users_count?: number; /** @example false */ builtin?: boolean; }; }; }; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/roles/{role}/permissions": { parameters: { query?: never; header?: never; path: { /** * @description 角色名。 * @example moderator */ role: string; }; cookie?: never; }; get?: never; /** * [角色管理] 同步角色权限 * @description 全量替换该角色的权限集合。super-admin 角色不可修改。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description 角色名。 * @example moderator */ role: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 权限键列表。 * @example [ * "admin:comment:read" * ] */ permissions: string[]; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example role */ kind?: string; /** @example moderator */ name?: string; /** * @example [ * "admin:comment:read" * ] */ permissions?: string[]; /** @example 1 */ users_count?: number; /** @example false */ builtin?: boolean; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "super-admin role cannot be modified." * ] */ role?: string[]; }; }; }; }; }; }; }; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/roles/{id}": { parameters: { query?: never; header?: never; path: { /** * @description The ID of the role. * @example architecto */ id: string; /** * @description 角色名。 * @example reviewer */ role: string; }; cookie?: never; }; get?: never; put?: never; post?: never; /** * [角色管理] 删除角色 * @description 内建角色与仍有用户的角色不可删除。 */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the role. * @example architecto */ id: string; /** * @description 角色名。 * @example reviewer */ role: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example Role deleted */ message?: string; }; }; }; }; }; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/permissions": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [角色管理] 权限目录 * @description 按模块/分组返回全部已注册权限键及描述,用于权限矩阵渲染。 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { comment?: { /** @example comment */ module?: string; groups?: { admin?: { /** @example View reported comments */ "admin:comment:read"?: string; }; }; }; }; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/users": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** [角色管理] 搜索用户(角色分配用) */ get: { parameters: { query: { /** * @description 按邮箱/用户名/UID 模糊搜索。 示例: moderator * @example architecto */ q: string; }; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Must not be greater than 100 characters. * @example b */ q: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "role_user", * "uid": "01HXXXX", * "display_name": "内容审核员", * "email": "moderator@gig.local", * "roles": [ * "moderator" * ] * } * ] */ data?: { /** @example role_user */ kind?: string; /** @example 01HXXXX */ uid?: string; /** @example 内容审核员 */ display_name?: string; /** @example moderator@gig.local */ email?: string; /** * @example [ * "moderator" * ] */ roles?: string[]; }[]; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/auth/users/{uid}/roles": { parameters: { query?: never; header?: never; path: { /** * @description 用户 UID。 * @example 01HXXXX */ uid: string; }; cookie?: never; }; get?: never; /** * [角色管理] 分配用户角色 * @description 全量替换用户的角色集合。不能修改自己的角色。 */ put: { parameters: { query?: never; header?: never; path: { /** * @description 用户 UID。 * @example 01HXXXX */ uid: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 角色名列表。 * @example [ * "moderator" * ] */ roles: string[]; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example role_user */ kind?: string; /** @example 01HXXXX */ uid?: string; /** * @example [ * "moderator" * ] */ roles?: string[]; }; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "You cannot modify your own roles." * ] */ uid?: string[]; }; }; }; }; }; }; }; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/comments/reported": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [评论审核] 被举报评论列表 * @description 按被举报的评论分组列出举报,附带举报明细与屏蔽状态。 */ get: { parameters: { query?: { /** * @description 可选。按状态过滤: pending(有待处理举报), blocked(已屏蔽), all(默认)。 示例: pending * @example architecto */ status?: string; /** * @description 可选。页码。 示例: 1 * @example 16 */ page?: number; /** * @description 可选。每页数量,最大100。 示例: 20 * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example blocked * @enum {string|null} */ status?: "pending" | "blocked" | "all" | null; /** * @description Must be at least 1. * @example 16 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 22 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "kind": "reported_comment", * "id": 10, * "body": "这条评论包含垃圾推广链接", * "body_format": "markdown", * "status": "active", * "is_blocked": false, * "blocked_at": null, * "blocked_by_uid": null, * "author": { * "uid": "01HYYYY", * "display_name": "Bob" * }, * "open_reports_count": 2, * "latest_report_at": "2026-07-11T10:10:00Z", * "reports": [ * { * "id": 1, * "reason": "spam", * "message": "含有垃圾推广链接", * "status": "open", * "reporter": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "created_at": "2026-07-11T10:10:00Z", * "handled_at": null * } * ], * "created_at": "2026-07-10T09:00:00Z" * } * ] */ data?: { /** @example reported_comment */ kind?: string; /** @example 10 */ id?: number; /** @example 这条评论包含垃圾推广链接 */ body?: string; /** @example markdown */ body_format?: string; /** @example active */ status?: string; /** @example false */ is_blocked?: boolean; /** @example null */ blocked_at?: string; /** @example null */ blocked_by_uid?: string; author?: { /** @example 01HYYYY */ uid?: string; /** @example Bob */ display_name?: string; }; /** @example 2 */ open_reports_count?: number; /** @example 2026-07-11T10:10:00Z */ latest_report_at?: string; /** * @example [ * { * "id": 1, * "reason": "spam", * "message": "含有垃圾推广链接", * "status": "open", * "reporter": { * "uid": "01HXXXX", * "display_name": "Alice" * }, * "created_at": "2026-07-11T10:10:00Z", * "handled_at": null * } * ] */ reports?: { /** @example 1 */ id?: number; /** @example spam */ reason?: string; /** @example 含有垃圾推广链接 */ message?: string; /** @example open */ status?: string; reporter?: { /** @example 01HXXXX */ uid?: string; /** @example Alice */ display_name?: string; }; /** @example 2026-07-11T10:10:00Z */ created_at?: string; /** @example null */ handled_at?: string; }[]; /** @example 2026-07-10T09:00:00Z */ created_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example null */ next_page?: string; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 1 */ total_count?: number; /** @example 1 */ total_pages?: number; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/comments/reported/{comment}": { parameters: { query?: never; header?: never; path: { /** * @description 评论 ID。 * @example 10 */ comment: number; }; cookie?: never; }; get?: never; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * [评论审核] 处理被举报评论 * @description approve: 举报成立,屏蔽评论并将其全部待处理举报标记已处理; * reject: 举报不成立,驳回全部待处理举报; * revert: 撤销屏蔽(仅对已屏蔽评论有效),举报记录保留。 */ patch: { parameters: { query?: never; header?: never; path: { /** * @description 评论 ID。 * @example 10 */ comment: number; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 处理动作: approve, reject, revert。 * @example approve */ action: string; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example reported_comment */ kind?: string; /** @example 10 */ id?: number; /** @example true */ is_blocked?: boolean; /** @example 2026-07-11T10:20:00Z */ blocked_at?: string; /** @example 01HXXXX */ blocked_by_uid?: string; /** @example 0 */ open_reports_count?: number; }; /** @example Moderation applied */ message?: string; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example The given data was invalid. */ message?: string; data?: { errors?: { /** * @example [ * "Comment is not blocked." * ] */ action?: string[]; }; }; }; }; }; }; }; trace?: never; }; "/api/admin/v1/notification/devices/stats": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [管理] 获取设备统计信息 * @description 获取系统级别的设备统计数据。 */ get: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 150 */ total_devices?: number; /** @example 89 */ online_devices?: number; platform_stats?: { /** @example 45 */ ios?: number; /** @example 67 */ android?: number; /** @example 23 */ web?: number; /** @example 15 */ desktop?: number; }; }; /** @example Device statistics retrieved successfully */ message?: string; }; }; }; 400: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Failed to retrieve statistics: [error message] */ message?: string; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/api/admin/v1/notification/devices": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * [管理] 获取设备列表 * @description 获取所有设备的分页列表,支持按平台、在线状态等筛选。 */ get: { parameters: { query?: { /** * @description 可选。按平台筛选 (ios, android, web, desktop) * @example architecto */ platform?: string; /** * @description 可选。按在线状态筛选 * @example false */ is_online?: boolean; /** * @description 可选。页码 (默认: 1) * @example 16 */ page?: number; /** * @description 可选。每页条数 (默认: 20, 最大: 100) * @example 16 */ page_size?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @example web * @enum {string|null} */ platform?: "ios" | "android" | "web" | "desktop" | null; /** @example true */ is_online?: boolean | null; /** * @description Must be at least 1. * @example 16 */ page?: number | null; /** * @description Must be at least 1. Must not be greater than 100. * @example 22 */ page_size?: number | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": "01HN1234567890ABCDEF", * "device_client_id": "device_123", * "platform": "ios", * "app_key": "app_v1", * "device_model": "iPhone 12", * "push_token": "push_token_here", * "websocket_session_id": "ws_session_123", * "last_seen_at": "2023-11-15T07:30:00.000000Z", * "is_online": true, * "kind": "device", * "active_sessions_count": 2, * "created_at": "2023-11-01T00:00:00.000000Z", * "updated_at": "2023-11-15T07:30:00.000000Z" * } * ] */ data?: { /** @example 01HN1234567890ABCDEF */ id?: string; /** @example device_123 */ device_client_id?: string; /** @example ios */ platform?: string; /** @example app_v1 */ app_key?: string; /** @example iPhone 12 */ device_model?: string; /** @example push_token_here */ push_token?: string; /** @example ws_session_123 */ websocket_session_id?: string; /** @example 2023-11-15T07:30:00.000000Z */ last_seen_at?: string; /** @example true */ is_online?: boolean; /** @example device */ kind?: string; /** @example 2 */ active_sessions_count?: number; /** @example 2023-11-01T00:00:00.000000Z */ created_at?: string; /** @example 2023-11-15T07:30:00.000000Z */ updated_at?: string; }[]; pagination?: { /** @example 1 */ current_page?: number; /** @example 2 */ next_page?: number; /** @example 20 */ page_size?: number; /** @example null */ prev_page?: string; /** @example 150 */ total_count?: number; /** @example 8 */ total_pages?: number; }; /** @example Devices retrieved successfully */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; data?: { /** * @example [ * "The selected platform is invalid." * ] */ platform?: string[]; /** * @example [ * "The is_online field must be true or false." * ] */ is_online?: string[]; }; }; }; }; }; }; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: never; responses: never; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { Dimzou: { parameters: { query?: never; header?: never; path: { /** * @description 文章 UUID。 * @example 9f1c2d3e-4b5a-6789-0abc-def012345678 */ article: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_article_preview */ kind?: string; /** @example 空调多久洗一次?一篇讲清楚 */ title?: string; /** @example 从健康与能耗角度给出清洗周期建议 */ summary?: string; /** @example null */ cover_image?: string; /** @example

为什么要定期清洗

……

*/ html?: string; }; }; }; }; 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example UNAUTHENTICATED */ code?: string; /** @example 未认证 */ message?: string; }; }; }; 403: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example FORBIDDEN */ code?: string; /** @example 无权限访问 */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example NOT_FOUND */ code?: string; /** @example 请求的资源未找到。 */ message?: string; }; }; }; }; }; AgentToken: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; AgentToken: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example studio_agent_token_grant */ kind?: string; /** @example Bearer */ token_type?: string; /** @example 1296000 */ expires_in?: number; /** @example eyJ0… */ access_token?: string; /** @example def5… */ refresh_token?: string; connect?: { /** @example https://host/mcp/studio */ endpoint?: string; /** @example Authorization: Bearer */ header?: string; }; }; /** @example Agent token 签发成功 */ message?: string; }; }; }; }; }; AgentToken: { parameters: { query?: never; header?: never; path: { /** @example architecto */ tokenId: string; }; cookie?: never; }; requestBody?: never; responses: never; }; getCategoryTreeadmin: { parameters: { query?: { /** * @description Optional locale code (e.g., 'zh-hans', 'en'). Defaults to current application locale. * @example sr_BA */ locale?: string; /** * @description Optional flag to include inactive categories. Defaults to false. * @example false */ include_inactive?: boolean; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "text/plain": string; }; }; }; }; listPendingUserCreatedCategories: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; approveAPendingCategorymakeItPublic: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; requestBody?: never; responses: never; }; rejectAPublicRequestkeepTheCategoryPrivate: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; requestBody?: never; responses: never; }; mergeACategoryIntoAnotherpreservesBothIDs: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description The surviving category UUID. * @example architecto */ target_id: string; }; }; }; responses: never; }; createCategory: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Optional UUID for the category. Auto-generated if not provided. * @example architecto */ id?: string | null; /** * @description Optional UUID of parent category. * @example architecto */ parent_id?: string | null; /** * @description Unique slug identifier for the category. * @example architecto */ slug: string; /** * @description Optional sort order (default: 0). * @example 16 */ sort_order?: number; /** * @description Optional active status (default: true). * @example false */ is_active?: boolean; /** * @description Optional Array of translations. * @example [ * "architecto" * ] */ translations?: (string | null)[]; }; }; }; responses: { 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example category */ kind?: string; /** @example uuid */ id?: string; /** @example null */ parent_id?: string; /** @example 1 */ level?: number; /** @example new-category */ slug?: string; /** @example 0 */ sort_order?: number; /** @example true */ is_active?: boolean; /** @example new-category */ name?: string; /** @example null */ description?: string; /** @example [] */ translations?: unknown[]; /** @example 2026-01-27T12:00:00.000000Z */ created_at?: string; /** @example 2026-01-27T12:00:00.000000Z */ updated_at?: string; }; /** @example Category created successfully */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; /** * @example [ * "Category slug must be unique" * ] */ data?: string[]; }; }; }; }; }; getCategoryDetails: { parameters: { query?: never; header?: never; path: { /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "text/plain": string; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Category not found */ message?: string; }; }; }; }; }; updateCategory: { parameters: { query?: never; header?: never; path: { /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** * @description Optional UUID of parent category. * @example architecto */ parent_id?: string | null; /** * @description Optional unique slug identifier. * @example architecto */ slug?: string; /** * @description Optional sort order. * @example 16 */ sort_order?: number; /** * @description Optional active status. * @example false */ is_active?: boolean; /** * @description Optional array of translations. * @example [ * "architecto" * ] */ translations?: string[]; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example category */ kind?: string; /** @example uuid */ id?: string; /** @example null */ parent_id?: string; /** @example 1 */ level?: number; /** @example updated-category */ slug?: string; /** @example 更新的分类 */ name?: string; /** @example 更新的描述 */ description?: string; }; /** @example Category updated successfully */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; /** * @example [ * "Cannot set parent as it would create a circular reference" * ] */ data?: string[]; }; }; }; }; }; deleteCategory: { parameters: { query?: never; header?: never; path: { /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example Category deleted successfully */ message?: string; }; }; }; 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example DELETE_FAILED */ code?: string; /** @example Failed to delete category */ message?: string; /** @example Cannot delete category with children */ data?: string; }; }; }; }; }; listAllTranslationsForCategory: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** * @example [ * { * "id": "translation-uuid-1", * "category_id": "category-uuid", * "locale": "en", * "name": "Home Services", * "description": "Various home services" * }, * { * "id": "translation-uuid-2", * "category_id": "category-uuid", * "locale": "zh-hans", * "name": "家庭服务", * "description": "提供各种家庭服务" * } * ] */ data?: { /** @example translation-uuid-1 */ id?: string; /** @example category-uuid */ category_id?: string; /** @example en */ locale?: string; /** @example Home Services */ name?: string; /** @example Various home services */ description?: string; }[]; }; }; }; }; }; getTranslationForSpecificLocale: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description Locale code (e.g., 'en', 'zh-hans'). * @example sr_BA */ locale: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example translation-uuid */ id?: string; /** @example category-uuid */ category_id?: string; /** @example zh-hans */ locale?: string; /** @example 家庭服务 */ name?: string; /** @example 提供各种家庭服务 */ description?: string; /** @example 2026-01-27T12:00:00.000000Z */ created_at?: string; /** @example 2026-01-27T12:00:00.000000Z */ updated_at?: string; }; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example TRANSLATION_NOT_FOUND */ code?: string; /** @example Translation not found */ message?: string; }; }; }; }; }; createOrUpdateTranslationForSpecificLocale: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description Locale code (e.g., 'en', 'zh-hans'). * @example sr_BA */ locale: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Translation name. * @example architecto */ name: string; /** * @description Optional translation description. * @example Eius et animi quos velit et. */ description?: string | null; }; }; }; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example translation-uuid */ id?: string; /** @example category-uuid */ category_id?: string; /** @example zh-hans */ locale?: string; /** @example 家庭服务 */ name?: string; /** @example 提供各种家庭服务 */ description?: string; /** @example 2026-01-27T12:00:00.000000Z */ created_at?: string; /** @example 2026-01-27T12:00:00.000000Z */ updated_at?: string; }; /** @example Translation updated successfully */ message?: string; }; }; }; 201: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example translation-uuid */ id?: string; /** @example category-uuid */ category_id?: string; /** @example zh-hans */ locale?: string; /** @example 家庭服务 */ name?: string; /** @example 提供各种家庭服务 */ description?: string; }; /** @example Translation created successfully */ message?: string; }; }; }; }; }; deleteTranslationForSpecificLocale: { parameters: { query?: never; header?: never; path: { /** * @description The ID of the category. * @example 2912b591-09f0-4c14-9190-866abd51cbee */ category_id: string; /** * @description Locale code (e.g., 'en', 'zh-hans'). * @example sr_BA */ locale: string; /** * @description UUID of the category. * @example architecto */ id: string; }; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example Translation deleted successfully */ message?: string; }; }; }; 404: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example TRANSLATION_NOT_FOUND */ code?: string; /** @example Translation not found */ message?: string; }; }; }; }; }; APIOpenAPI: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; APIOpenAPI: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 401: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example Authentication required */ message?: string; /** @example UNAUTHENTICATED */ code?: string; }; }; }; }; }; SID: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description SID 值,格式为 3 位非歧义字母加 6 位数字,支持带/不带横杠。 * @example ABC-888888 */ sid: string; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example ABC-888888 */ sid?: string; /** @example true */ reserved?: boolean; }; }; }; }; }; }; SIDSID: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description 用户 UID。 * @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ user_uid: string; /** * @description SID 值,格式为 3 位非歧义字母加 6 位数字,支持带/不带横杠。 * @example ABC-168888 */ sid: string; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example 01HQ8M4Z2A3B5C6D7E8F9G0H1I2J3K4L */ uid?: string; /** @example ABC168888 */ sid?: string; }; }; }; }; }; }; OTP: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Admin email or phone. * @example admin@example.com */ identity: string; /** * @description Identity type (email/phone). * @example email */ type: string; /** * @description required_if:type,phone ISO 3166-1 alpha-3 country code. * @example CHN */ country_code?: string; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; /** @example null */ data?: string; meta?: { /** @example 4 */ code_length?: number; }; /** @example OTP sent successfully */ message?: string; }; }; }; /** @description validation_error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; data?: { errors?: { /** * @example [ * "Identity field is required" * ] */ identity?: string[]; /** * @example [ * "Type must be email or phone" * ] */ type?: string[]; /** * @example [ * "Country code is required for phone type" * ] */ country_code?: string[]; }; }; }; }; }; /** @description rate_limit */ 429: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example TOO_MANY_REQUESTS */ code?: string; /** @example Too many requests */ message?: string; data?: { /** @example 60 */ retry_after?: number; }; }; }; }; }; }; OTP: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description Admin email or phone. * @example admin@example.com */ identity: string; /** * @description Identity type (email/phone). * @example email */ type: string; /** * @description OTP code. * @example 1234 */ code: string; }; }; }; responses: { /** @description success */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6... */ access_token?: string; /** @example Bearer */ token_type?: string; /** @example 900 */ expires_in?: number; /** @example refresh-token-string */ refresh_token?: string; }; /** @example Admin login successful */ message?: string; }; }; }; /** @description invalid_otp */ 400: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example INVALID_OTP */ code?: string; /** @example Invalid or expired OTP code */ message?: string; }; }; }; /** @description validation_error */ 422: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example false */ success?: boolean; /** @example VALIDATION_ERROR */ code?: string; /** @example Validation failed */ message?: string; data?: { errors?: { /** * @example [ * "OTP code is required" * ] */ code?: string[]; /** * @example [ * "Type must be email or phone" * ] */ type?: string[]; }; }; }; }; }; }; }; getTheCurrentAdminUserWithRolesAndPermissions: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @example true */ success?: boolean; data?: { /** @example user */ kind?: string; /** @example 01J... */ uid?: string; /** @example Admin */ display_name?: string; /** @example active */ status?: string; }; meta?: { /** * @example [ * "admin" * ] */ roles?: string[]; /** * @example [ * "admin:category:read", * "admin:category:approve" * ] */ permissions?: string[]; }; }; }; }; }; }; }