{
    "schemes": [
        "http",
        "https"
    ],
    "swagger": "2.0",
    "info": {
        "description": "萌芽小店电商后端 HTTP API：商品、下单结账、订单与支付、站点统计与访问、维护模式、收藏、用户/管理员聊天、萌芽支付 Webhook，以及管理端商品/订单/站点与运维状态等。用户身份由萌芽账户认证中心（SproutGate）签发令牌并完成校验。\n\n**运行环境与基地址**\n- **本地开发**：监听地址由环境变量 `HTTP_LISTEN_ADDR` 决定，未设置时默认为 `:8080`，即常见入口 `http://localhost:8080`。可在浏览器打开 `http://localhost:8080/swagger/index.html` 查看本页同款文档并调试。\n- **生产部署**：线上前台/API 域名为 `https://store.shumengya.top`（HTTPS）。若前面还有网关、路径前缀或端口映射，请在拼接请求 URL 时以实际对外发布地址为准；Swagger 中默认 Host 为本地，联调线上时请将浏览器地址或客户端 Base URL 换成生产基地址。\n\n**说明**：本 OpenAPI 由代码注释生成；与进程真实监听、反向代理头无关，仅作契约参考。",
        "title": "萌芽小店 API",
        "contact": {},
        "version": "1.0.0-go"
    },
    "host": "localhost:8080",
    "basePath": "/",
    "paths": {
        "/": {
            "get": {
                "description": "访问服务根路径 `/` 返回 JSON：服务简介、本地与生产环境说明、主要业务路由分组、运行版本与时间戳。完整请求/响应模型请使用 Swagger UI：`GET /swagger/index.html`。本地一般为 `http://localhost:8080/`，生产域名为 `https://store.shumengya.top/`。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "元信息"
                ],
                "summary": "根路径 API 说明与路由索引",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/admin/chat": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "返回每个有过消息的用户账号等信息，供客服选择会话；需管理令牌 `X-Admin-Token`。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-聊天"
                ],
                "summary": "管理端：列出全部聊天会话",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/chat/{account}": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "路径参数 `account` 为用户账号标识；返回按时间排列的消息数组；需管理令牌。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-聊天"
                ],
                "summary": "管理端：查看某用户的完整聊天记录",
                "parameters": [
                    {
                        "type": "string",
                        "description": "用户账号（路径）",
                        "name": "account",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerMessagesWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "路径为对方账号，JSON body 含 `content`；写入后用户侧拉取可见。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-聊天"
                ],
                "summary": "管理端：向用户回复一条消息",
                "parameters": [
                    {
                        "type": "string",
                        "description": "用户账号（路径）",
                        "name": "account",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "回复正文 JSON",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.AdminChatPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerOneChatMsgWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "删除该账号在系统中的全部聊天消息记录；不可恢复请谨慎使用。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-聊天"
                ],
                "summary": "管理端：清空与某用户的会话",
                "parameters": [
                    {
                        "type": "string",
                        "description": "用户账号（路径）",
                        "name": "account",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerBoolOKWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/orders": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "返回数据库中订单全量列表（含敏感字段），供后台管理；需 `X-Admin-Token`。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-订单"
                ],
                "summary": "管理端获取全部订单",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerOrdersBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/orders/{id}": {
            "delete": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "按路径中的订单 ID 删除记录；不可恢复请谨慎操作。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-订单"
                ],
                "summary": "管理端删除指定订单",
                "parameters": [
                    {
                        "type": "string",
                        "description": "订单ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerBoolOKWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/products": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "含下架商品、卡密字段等完整数据，仅限管理令牌访问。需在请求头携带 `X-Admin-Token`。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "管理端获取全部商品列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductListBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "提交完整商品载荷：价格、卡密/固定内容、收款码链接、是否上架等。校验失败返回 400。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "管理端创建商品",
                "parameters": [
                    {
                        "description": "商品各字段（含可选卡密、截图、收款码等）",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.ProductPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductOneBody"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/products/{id}": {
            "put": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "路径参数为商品 ID，请求体为整包覆盖式更新（以服务端绑定逻辑为准）。未找到则 404。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "管理端更新商品",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "待写入的商品字段",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.ProductPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductOneBody"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "按 ID 永久删除商品记录（影响以数据库外键/业务逻辑为准），需管理令牌。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "管理端删除商品",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerBoolOKWrap"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/products/{id}/status": {
            "patch": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "PATCH 请求体为 `{ \"active\": true|false }`，用于快速上下架而不改其它字段。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "管理端切换商品上架状态",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "上架开关 { \\",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.TogglePayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductOneBody"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/site/maintenance": {
            "post": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "打开维护后前台可展示原因文案；需管理令牌。请求体含 `maintenance` 布尔与可选 `reason`。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-站点"
                ],
                "summary": "设置全站维护模式",
                "parameters": [
                    {
                        "description": "maintenance 与 reason",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.MaintenancePayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerMaintenanceWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/site/smtp": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "返回当前站点发件配置；密码字段以占位符脱敏显示，不会返回明文。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-站点"
                ],
                "summary": "获取发信 SMTP 配置（脱敏）",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerSMTPWrap"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "写入 SMTP 主机、端口、账号等；若密码仍为脱敏占位符则保留库中已有密码（实现细节见服务逻辑）。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-站点"
                ],
                "summary": "保存发信 SMTP 配置",
                "parameters": [
                    {
                        "description": "SMTP 连接与发件人信息",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/storage.SMTPConfig"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerStringOKBody"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/system-status": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "description": "聚合展示配置摘要、数据库/MySQL、RabbitMQ、Redis 等探测结果与进程启动时间，便于运维排查；需管理令牌。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-系统"
                ],
                "summary": "管理端系统运行状态与依赖探活",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/admin/verify": {
            "post": {
                "description": "请求体 JSON 含 `token` 字段；响应仅返回 `{\"valid\": true|false}`，不会返回真实口令或敏感信息。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-认证"
                ],
                "summary": "校验管理端令牌是否有效",
                "parameters": [
                    {
                        "description": "待校验的管理员 token（JSON）",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.AdminVerifyTokenRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerValidBody"
                        }
                    }
                }
            }
        },
        "/api/chat/messages": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "需在请求头携带有效的 `Authorization: Bearer \u003ctoken\u003e`。返回该登录用户在客服系统中与管理员往来的全部消息列表。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "聊天（用户）"
                ],
                "summary": "拉取当前用户聊天记录",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerMessagesWrap"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "需在请求头携带 Bearer。正文为 JSON `content` 字段；可能因频率限制返回 429。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "聊天（用户）"
                ],
                "summary": "用户发送聊天消息",
                "parameters": [
                    {
                        "description": "消息正文（JSON）",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.ChatMessagePayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerOneChatMsgWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "429": {
                        "description": "Too Many Requests",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/checkout": {
            "post": {
                "description": "根据商品配置决定是否需要登录（`requireLogin`）。可附带 `Authorization: Bearer` 以关联账号、限购与通知邮箱。付费订单走萌芽支付时需商品已配置收款码；同一商品在他人待支付锁定期内可能返回 409；同一账号存在待支付单时也可能冲突。成功返回订单概要及二维码链接等。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "订单"
                ],
                "summary": "结账并创建订单",
                "parameters": [
                    {
                        "type": "string",
                        "description": "可选；格式 Bearer + 空格 + token，部分商品必填",
                        "name": "Authorization",
                        "in": "header"
                    },
                    {
                        "description": "结账请求体：商品、数量、联系方式等",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.CheckoutPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerCheckoutWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "409": {
                        "description": "库存锁定冲突（他人正在支付）或同账号待支付单未满间隔",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/health": {
            "get": {
                "description": "用于负载均衡或编排探活：`status` 恒为 ok 表示 HTTP 服务存活；`rabbitmq` 为 `disabled`（未启用消息队列客户端）、`ok`（连接可用）或以 `error:` 开头的错误片段。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "健康检查"
                ],
                "summary": "健康检查",
                "responses": {
                    "200": {
                        "description": "status 为 ok；rabbitmq 为 disabled、ok 或 error: 前缀错误信息",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/orders": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "必须携带有效 Bearer。列表中处于待支付状态的订单不会包含已分配卡密等敏感字段，防止泄露。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "订单"
                ],
                "summary": "查询当前登录用户的订单列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerOrdersBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/orders/{id}/cancel": {
            "post": {
                "description": "仅对允许取消的状态生效（如待支付）；已完成订单会冲突。成功时释放预留库存/卡密占用。请勿在公网暴露此能力时省略鉴权策略（实现以代码为准）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "订单"
                ],
                "summary": "取消待支付订单",
                "parameters": [
                    {
                        "type": "string",
                        "description": "订单ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerCancelWrap"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/orders/{id}/confirm": {
            "post": {
                "description": "用于用户侧「确认」动作：已完成订单直接返回数据；待支付时若仍未到账则 409；已取消或超时 410。手动发货等场景下会触发邮件通知（若配置）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "订单"
                ],
                "summary": "确认订单（核销/完成流程）",
                "parameters": [
                    {
                        "type": "string",
                        "description": "订单ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerConfirmWrap"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "409": {
                        "description": "待支付但金额未核对到账等",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "410": {
                        "description": "订单已取消或已超过待支付时限",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/orders/{id}/payment-status": {
            "get": {
                "description": "供前端轮询待支付订单：返回状态、应付快照、过期时间等；不包含卡密等敏感发货内容。路径参数为订单 ID。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "订单"
                ],
                "summary": "查询订单支付状态（轮询）",
                "parameters": [
                    {
                        "type": "string",
                        "description": "订单ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerPaymentStatusWrap"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/products": {
            "get": {
                "description": "返回当前处于「上架」状态的商品集合，仅包含前台展示所需字段（不含卡密、管理字段等）。无需登录。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "公开"
                ],
                "summary": "获取上架商品列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductListBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/products/{id}/view": {
            "post": {
                "description": "对指定商品增加浏览计数；是否计入由服务端对访客指纹去重策略决定，用于热门统计。路径参数为商品 ID。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "公开"
                ],
                "summary": "记录商品浏览次数",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品ID（路径）",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerProductViewWrap"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/site/maintenance": {
            "get": {
                "description": "返回当前是否开启全站维护、以及展示给前端的维护原因文案（公开接口，无需管理令牌）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "公开"
                ],
                "summary": "获取维护模式状态",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerMaintenanceWrap"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/site/visit": {
            "post": {
                "description": "记录访客一次访问并累加全站访问计数；是否计入由服务端指纹等策略决定，响应中含最新总访问量与本次是否计入。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "公开"
                ],
                "summary": "上报一次站点访问",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerVisitWrap"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/stats": {
            "get": {
                "description": "返回全站累计订单数与累计访问量（公开读，用于首页展示等）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "公开"
                ],
                "summary": "获取站点聚合统计",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerStatsWrap"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/webhooks/mengya-pay": {
            "post": {
                "description": "由支付渠道/转发服务 POST 原始 JSON；服务端解析到账金额并尝试匹配待支付订单。若配置 `WEBHOOK_MENGYA_SECRET`，请求头 `X-Webhook-Secret` 必须与其一致。本地联调与生产 `https://store.shumengya.top` 均使用同一路径，由部署时的域名与 TLS 决定回调 URL。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Webhook"
                ],
                "summary": "萌芽支付到账 Webhook",
                "parameters": [
                    {
                        "type": "string",
                        "description": "与进程环境变量 WEBHOOK_MENGYA_SECRET 一致；未配置密钥时可不填",
                        "name": "X-Webhook-Secret",
                        "in": "header"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerWebhookMengyaResp"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/wishlist": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "需 Bearer 登录。返回该账号已收藏的商品 ID 数组（顺序由存储实现决定）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "收藏"
                ],
                "summary": "获取当前用户收藏列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerWishlistWrap"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "需 Bearer。请求体为 `{ \"productId\": \"...\" }`；幂等语义由存储层实现（重复添加可忽略或报错以实际为准）。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "收藏"
                ],
                "summary": "添加商品到收藏",
                "parameters": [
                    {
                        "description": "包含 productId 的 JSON",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handlers.WishlistItemPayload"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerWishlistWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        },
        "/api/wishlist/{id}": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "需 Bearer。路径参数为要移除的商品 ID。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "收藏"
                ],
                "summary": "从收藏中移除商品",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品ID（路径）",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerWishlistWrap"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/handlers.SwaggerErrorBody"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "handlers.AdminChatPayload": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                }
            }
        },
        "handlers.AdminVerifyTokenRequest": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        },
        "handlers.ChatMessagePayload": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                }
            }
        },
        "handlers.CheckoutPayload": {
            "type": "object",
            "properties": {
                "contactEmail": {
                    "type": "string"
                },
                "contactPhone": {
                    "type": "string"
                },
                "note": {
                    "type": "string"
                },
                "notifyEmail": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                }
            }
        },
        "handlers.MaintenancePayload": {
            "type": "object",
            "properties": {
                "maintenance": {
                    "type": "boolean"
                },
                "reason": {
                    "type": "string"
                }
            }
        },
        "handlers.ProductPayload": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "codes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "coverUrl": {
                    "type": "string"
                },
                "deliveryMode": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "discountPrice": {
                    "type": "number"
                },
                "fixedContent": {
                    "type": "string"
                },
                "fulfillmentType": {
                    "type": "string"
                },
                "maxPerAccount": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "paymentQrUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "price": {
                    "type": "number"
                },
                "requireLogin": {
                    "type": "boolean"
                },
                "screenshotUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "showContact": {
                    "type": "boolean"
                },
                "showNote": {
                    "type": "boolean"
                },
                "tags": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerBoolOK": {
            "type": "object",
            "properties": {
                "ok": {
                    "type": "boolean"
                }
            }
        },
        "handlers.SwaggerBoolOKWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerBoolOK"
                }
            }
        },
        "handlers.SwaggerCancelMsg": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "ok": {
                    "type": "boolean"
                }
            }
        },
        "handlers.SwaggerCancelWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerCancelMsg"
                }
            }
        },
        "handlers.SwaggerCheckoutData": {
            "type": "object",
            "properties": {
                "orderId": {
                    "type": "string"
                },
                "paymentExpectedTotal": {
                    "type": "number"
                },
                "paymentExpiresAt": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "paymentQrUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "productId": {
                    "type": "string"
                },
                "productQty": {
                    "type": "integer"
                },
                "qrCodeUrl": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "viewCount": {
                    "type": "integer"
                }
            }
        },
        "handlers.SwaggerCheckoutWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerCheckoutData"
                }
            }
        },
        "handlers.SwaggerConfirmData": {
            "type": "object",
            "properties": {
                "deliveredCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "deliveryMode": {
                    "type": "string"
                },
                "isManual": {
                    "type": "boolean"
                },
                "orderId": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerConfirmWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerConfirmData"
                }
            }
        },
        "handlers.SwaggerErrorBody": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerMaintenanceData": {
            "type": "object",
            "properties": {
                "maintenance": {
                    "type": "boolean"
                },
                "reason": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerMaintenanceWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerMaintenanceData"
                }
            }
        },
        "handlers.SwaggerMessagesInner": {
            "type": "object",
            "properties": {
                "messages": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.ChatMessage"
                    }
                }
            }
        },
        "handlers.SwaggerMessagesWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerMessagesInner"
                }
            }
        },
        "handlers.SwaggerOneChatMsgWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerSingleChatWrap"
                }
            }
        },
        "handlers.SwaggerOrdersBody": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.Order"
                    }
                }
            }
        },
        "handlers.SwaggerPaymentStatusData": {
            "type": "object",
            "properties": {
                "expectedTotal": {
                    "type": "number"
                },
                "paymentExpiresAt": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerPaymentStatusWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerPaymentStatusData"
                }
            }
        },
        "handlers.SwaggerProductListBody": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.Product"
                    }
                }
            }
        },
        "handlers.SwaggerProductOneBody": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/models.Product"
                }
            }
        },
        "handlers.SwaggerProductViewData": {
            "type": "object",
            "properties": {
                "counted": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "viewCount": {
                    "type": "integer"
                }
            }
        },
        "handlers.SwaggerProductViewWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerProductViewData"
                }
            }
        },
        "handlers.SwaggerSMTPWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/storage.SMTPConfig"
                }
            }
        },
        "handlers.SwaggerSingleChatWrap": {
            "type": "object",
            "properties": {
                "message": {
                    "$ref": "#/definitions/models.ChatMessage"
                }
            }
        },
        "handlers.SwaggerStatsData": {
            "type": "object",
            "properties": {
                "totalOrders": {
                    "type": "integer"
                },
                "totalVisits": {
                    "type": "integer"
                }
            }
        },
        "handlers.SwaggerStatsWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerStatsData"
                }
            }
        },
        "handlers.SwaggerStringOKBody": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "string"
                }
            }
        },
        "handlers.SwaggerValidBody": {
            "type": "object",
            "properties": {
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "handlers.SwaggerVisitData": {
            "type": "object",
            "properties": {
                "counted": {
                    "type": "boolean"
                },
                "totalVisits": {
                    "type": "integer"
                }
            }
        },
        "handlers.SwaggerVisitWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerVisitData"
                }
            }
        },
        "handlers.SwaggerWebhookMengyaResp": {
            "type": "object",
            "properties": {
                "matched": {
                    "type": "boolean"
                },
                "matched_order_id": {
                    "type": "string"
                },
                "ok": {
                    "type": "boolean"
                }
            }
        },
        "handlers.SwaggerWishlistItems": {
            "type": "object",
            "properties": {
                "items": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "handlers.SwaggerWishlistWrap": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/handlers.SwaggerWishlistItems"
                }
            }
        },
        "handlers.TogglePayload": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                }
            }
        },
        "handlers.WishlistItemPayload": {
            "type": "object",
            "properties": {
                "productId": {
                    "type": "string"
                }
            }
        },
        "models.ChatMessage": {
            "type": "object",
            "properties": {
                "accountId": {
                    "type": "string"
                },
                "accountName": {
                    "type": "string"
                },
                "content": {
                    "type": "string"
                },
                "fromAdmin": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "sentAt": {
                    "type": "string"
                }
            }
        },
        "models.Order": {
            "type": "object",
            "properties": {
                "contactEmail": {
                    "type": "string"
                },
                "contactPhone": {
                    "type": "string"
                },
                "createdAt": {
                    "type": "string"
                },
                "deliveredCodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "deliveryMode": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "note": {
                    "type": "string"
                },
                "notifyEmail": {
                    "type": "string"
                },
                "paymentExpectedTotal": {
                    "type": "number"
                },
                "paymentExpiresAt": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "productId": {
                    "type": "string"
                },
                "productName": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "userAccount": {
                    "type": "string"
                },
                "userName": {
                    "type": "string"
                }
            }
        },
        "models.Product": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "codes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "coverUrl": {
                    "type": "string"
                },
                "createdAt": {
                    "type": "string"
                },
                "deliveryMode": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "discountPrice": {
                    "type": "number"
                },
                "fixedContent": {
                    "type": "string"
                },
                "fulfillmentType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "maxPerAccount": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "paymentQrUrls": {
                    "description": "PaymentQrURLs 萌芽支付收款码图片链接（可多条）。",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "price": {
                    "type": "number"
                },
                "quantity": {
                    "type": "integer"
                },
                "requireLogin": {
                    "type": "boolean"
                },
                "screenshotUrls": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "showContact": {
                    "type": "boolean"
                },
                "showNote": {
                    "type": "boolean"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "totalSold": {
                    "type": "integer"
                },
                "updatedAt": {
                    "type": "string"
                },
                "verificationUrl": {
                    "type": "string"
                },
                "viewCount": {
                    "type": "integer"
                }
            }
        },
        "storage.SMTPConfig": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "enabled": {
                    "type": "boolean"
                },
                "fromName": {
                    "type": "string"
                },
                "host": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "port": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "AdminToken": {
            "description": "管理端访问令牌：与进程环境变量 `ADMIN_TOKEN` 一致。部分管理路由也可使用 `Authorization` 头或 Query `token`（以具体路由实现为准）。",
            "type": "apiKey",
            "name": "X-Admin-Token",
            "in": "header"
        },
        "BearerAuth": {
            "description": "用户访问令牌：请求头 `Authorization`，值为 `Bearer ` 后接 SproutGate 返回的 JWT/access token（部分公开接口可不携带）。",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        },
        "WebhookSecret": {
            "description": "当服务端配置了 `WEBHOOK_MENGYA_SECRET` 时，萌芽支付到账回调 `POST /api/webhooks/mengya-pay` 需携带本头且值与密钥完全一致，否则返回 403。",
            "type": "apiKey",
            "name": "X-Webhook-Secret",
            "in": "header"
        }
    }
}