Files
gig-admin/src/api/types.gen.ts
T

11584 lines
432 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// @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<string, never>;
/**
* @description 配图风格配置(写入 profile)。
* @example {
* "style": "写实",
* "palette": "明亮"
* }
*/
image_style?: Record<string, never>;
/**
* @description 发布规则(写入 profile)。
* @example {
* "cadence": "每周 2 篇"
* }
*/
publishing_rules?: Record<string, never>;
/**
* @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<string, never>[];
/**
* @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<string, never>;
/**
* @description 文章大纲。
* @example []
*/
outline?: Record<string, never>;
/**
* @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<string, never>;
/**
* @description 发布排期配置。
* @example []
*/
publish_schedule?: Record<string, never>;
};
};
};
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<string, never>;
};
};
};
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<string, never>;
/**
* @description 配图风格配置(写入 profile)。
* @example []
*/
image_style?: Record<string, never>;
/**
* @description 发布规则(写入 profile)。
* @example []
*/
publishing_rules?: Record<string, never>;
/**
* @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<string, never>[];
/**
* @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<string, never>;
/**
* @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<string, never>;
};
};
};
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<string, never>;
};
};
};
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 [email protected] */
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": "[email protected]",
* "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 [email protected] */
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 [email protected] */
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<string, never>;
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 <code>email</code> is not present. Must not be greater than 32 characters.
* @example 13800138000
*/
phone?: string | null;
/**
* @description 邮箱地址,当没有手机号时作为身份标识。. This field is required when <code>phone</code> is not present. Must be a valid email address. Must not be greater than 255 characters.
* @example [email protected]
*/
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 [email protected]
*/
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": "[email protected]",
* "roles": [
* "moderator"
* ]
* }
* ]
*/
data?: {
/** @example role_user */
kind?: string;
/** @example 01HXXXX */
uid?: string;
/** @example 内容审核员 */
display_name?: string;
/** @example [email protected] */
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<string, never>;
export interface components {
schemas: never;
responses: never;
parameters: never;
requestBodies: never;
headers: never;
pathItems: never;
}
export type $defs = Record<string, never>;
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 <h2>为什么要定期清洗</h2><p>……</p> */
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 <access_token> */
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 [email protected]
*/
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 [email protected]
*/
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[];
};
};
};
};
};
};
}