{
    "schemes": [
        "http",
        "https"
    ],
    "swagger": "2.0",
    "info": {
        "description": "商品、下单、站点统计、收藏与客服聊天；用户登录由萌芽账户认证中心（SproutGate）校验。监听地址以 HTTP_LISTEN_ADDR 为准。",
        "title": "萌芽小店 API",
        "contact": {},
        "version": "1.0.0-go"
    },
    "host": "localhost:8080",
    "basePath": "/",
    "paths": {
        "/": {
            "get": {
                "description": "返回服务描述、主要路径指引与版本（非 OpenAPI 详尽列表，完整契约见 /swagger）。",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "元信息"
                ],
                "summary": "API 根信息与端点索引",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/admin/chat": {
            "get": {
                "security": [
                    {
                        "AdminToken": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-聊天"
                ],
                "summary": "管理员回复",
                "parameters": [
                    {
                        "type": "string",
                        "description": "用户账号",
                        "name": "account",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "回复内容",
                        "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-商品"
                ],
                "summary": "切换上架状态",
                "parameters": [
                    {
                        "type": "string",
                        "description": "商品 ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "{active}",
                        "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": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-站点"
                ],
                "summary": "设置维护模式",
                "parameters": [
                    {
                        "description": "维护开关与原因",
                        "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "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": "响应为 {\"valid\": true/false}，不泄露真实口令。",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "管理端-认证"
                ],
                "summary": "校验管理员令牌",
                "parameters": [
                    {
                        "description": "待校验 token",
                        "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": []
                    }
                ],
                "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": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "聊天（用户）"
                ],
                "summary": "发送用户消息",
                "parameters": [
                    {
                        "description": "消息正文",
                        "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": {
                "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": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "健康检查"
                ],
                "summary": "健康检查",
                "responses": {
                    "200": {
                        "description": "status ok；rabbitmq 为 disabled|ok|error:...",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                }
            }
        },
        "/api/orders": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "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": {
                "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": {
                "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": {
                "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": {
                "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": {
                "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": {
                "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": {
                "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": {
                "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": {
                "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": []
                    }
                ],
                "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": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "收藏"
                ],
                "summary": "添加收藏",
                "parameters": [
                    {
                        "description": "商品 ID",
                        "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": []
                    }
                ],
                "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": "管理端令牌（也可使用 Authorization 头或 query token，见各接口说明）",
            "type": "apiKey",
            "name": "X-Admin-Token",
            "in": "header"
        },
        "BearerAuth": {
            "description": "用户访问令牌，格式: Bearer 空格 + token",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        },
        "WebhookSecret": {
            "description": "与服务端 WEBHOOK_MENGYA_SECRET 一致时校验萌芽支付 Webhook",
            "type": "apiKey",
            "name": "X-Webhook-Secret",
            "in": "header"
        }
    }
}