openapi: '3.0.3' info: title: zzyxyz_vfs_api description: 虚拟文件系统API服务 version: '1.0' servers: - url: http://localhost:8080/api description: 开发环境 - url: https://api.zzyxyz.com/api description: 生产环境 tags: - name: vfs description: 虚拟文件系统相关操作 - name: user description: 用户相关操作 security: - ApiKeyAuth: [] paths: /vfs/v1/users/{username}: parameters: - name: username in: path example: user required: true schema: type: string post: summary: 创建用户 description: 创建一个用户 operationId: createUser tags: [user] responses: '201': description: 创建成功 headers: X-VFS-Token: schema: type: string description: 认证令牌 delete: summary: 删除用户 description: 删除一个用户 operationId: deleteUser tags: [user] responses: '204': description: 删除成功 '404': description: 用户不存在 content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/ServerInternalError' /vfs/v1/files: parameters: - name: path in: query required: true description: 文件系统路径,例如 "documents/readme.txt" 或 "services/mysql.service" 或 "folder/" schema: type: string example: "readme.txt" get: summary: 读取文件或列出目录 description: 获取指定路径的文件内容或目录列表 operationId: getVFSNode tags: [vfs] parameters: - name: op in: query required: false description: 操作类型, list表示列出目录内容, 不指定则读取文件内容 schema: type: string enum: [list] responses: '200': description: 文件内容或目录列表 content: application/json: schema: oneOf: - type: string description: 文件内容 - type: array items: $ref: '#/components/schemas/VFSDirectoryEntry' description: 目录条目列表 '404': description: 路径不存在 content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/ServerInternalError' post: summary: 创建文件或目录 description: 创建文件或目录 operationId: createVFSNode tags: [vfs] requestBody: required: false content: application/json: schema: type: string description: 文件内容(仅当type为file时有效) responses: '201': description: 创建成功 content: application/json: schema: $ref: '#/components/schemas/VFSNodeResponse' '400': description: 请求参数错误 content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/ServerInternalError' patch: summary: 修改文件或修改目录 description: 修改/移动/重命名/复制 已存在的 文件/目录 operationId: updateVFSNode tags: [vfs] parameters: - name: op in: query description: 操作模式 required: true schema: type: string enum: [move, rename, change, copy] requestBody: required: true content: application/json: schema: type: string description: 目的文件夹路径 / 文件名路径 example: "/home/" responses: '200': description: 操作成功 content: application/json: schema: $ref: '#/components/schemas/VFSNodeResponse' '400': description: 请求参数错误 content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/ServerInternalError' delete: summary: 删除文件或目录 description: 删除指定路径的文件或目录 operationId: deleteVFSNode tags: [vfs] responses: '204': description: 删除成功 '404': description: 路径不存在 content: application/json: schema: $ref: '#/components/schemas/Error' '500': $ref: '#/components/responses/ServerInternalError' components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-VFS-Token responses: ServerInternalError: description: 服务器内部错误 content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: 未授权 content: application/json: schema: $ref: '#/components/schemas/Error' schemas: VFSNodeType: type: string description: 节点类型 enum: [file, directory, service] VFSNodeResponse: type: object properties: name: type: string description: 节点名称 type: $ref: '#/components/schemas/VFSNodeType' created_at: type: string format: date-time description: 创建时间 updated_at: type: string format: date-time description: 更新时间 required: - name - type - created_at - updated_at VFSDirectoryEntry: type: object properties: name: type: string description: 条目名称 type: $ref: '#/components/schemas/VFSNodeType' permissions: type: string description: 权限信息,如 "rw" required: - name - type - modified Error: type: object description: 错误信息 properties: errtype: type: string example: "ParameterError" description: 错误类型 message: example: "传递的第一个参数错误" type: string description: 错误信息 required: - errtype - message