GitHub Raw JSON API

apache / answer

15,590 Go

A Q&A platform software for teams at any scales. Whether it's a community forum, help center, or knowledge management platform, you can always count on Apache Answer.

Apache Answer Specification

Located in docs/swagger.json on branch HEAD

2.0 JSON 161 Endpoints 439.7 KB

Operations & Route Endpoints (100)

GET /
if config file not exist try to redirect to install page
GET /answer/admin/api/ai-config
get AI configuration
PUT /answer/admin/api/ai-config
update AI configuration
POST /answer/admin/api/ai-models
get AI models
GET /answer/admin/api/ai-provider
get AI provider configuration
GET /answer/admin/api/ai/conversation
get conversation detail for admin
DELETE /answer/admin/api/ai/conversation
delete conversation for admin
GET /answer/admin/api/ai/conversation/page
get conversation list for admin
GET /answer/admin/api/answer/page
AdminAnswerPage admin answer page
PUT /answer/admin/api/answer/status
update answer status
PUT /answer/admin/api/api-key
update apikey
POST /answer/admin/api/api-key
add apikey
DELETE /answer/admin/api/api-key
delete apikey
GET /answer/admin/api/api-key/all
get all api keys
PUT /answer/admin/api/badge/status
update badge status
GET /answer/admin/api/badges
list all badges by page
GET /answer/admin/api/dashboard
DashboardInfo
DELETE /answer/admin/api/delete/permanently
delete permanently
GET /answer/admin/api/language/options
Get language options
GET /answer/admin/api/mcp-config
get MCP configuration
PUT /answer/admin/api/mcp-config
update MCP configuration
GET /answer/admin/api/plugin/config
get plugin config
PUT /answer/admin/api/plugin/config
update plugin config
PUT /answer/admin/api/plugin/status
update plugin status
GET /answer/admin/api/plugins
get plugin list
GET /answer/admin/api/question/page
AdminQuestionPage admin question page
PUT /answer/admin/api/question/status
update question status
GET /answer/admin/api/reasons
get reasons by object type and action
GET /answer/admin/api/roles
get role list
GET /answer/admin/api/setting/privileges
GetPrivilegesConfig get privileges config
PUT /answer/admin/api/setting/privileges
update privileges config
GET /answer/admin/api/setting/smtp
GetSMTPConfig get smtp config
PUT /answer/admin/api/setting/smtp
update smtp config
GET /answer/admin/api/siteinfo/advanced
get site advanced setting
PUT /answer/admin/api/siteinfo/advanced
update site advanced info
GET /answer/admin/api/siteinfo/branding
get site interface
PUT /answer/admin/api/siteinfo/branding
update site info branding
GET /answer/admin/api/siteinfo/custom-css-html
get site info custom html css config
PUT /answer/admin/api/siteinfo/custom-css-html
update site custom css html config
GET /answer/admin/api/siteinfo/general
get site general information
PUT /answer/admin/api/siteinfo/general
update site general information
GET /answer/admin/api/siteinfo/interface
get site interface
PUT /answer/admin/api/siteinfo/interface
update site info interface
GET /answer/admin/api/siteinfo/login
get site info login config
PUT /answer/admin/api/siteinfo/login
update site login
GET /answer/admin/api/siteinfo/polices
Get the policies information for the site
PUT /answer/admin/api/siteinfo/polices
update site policies configuration
GET /answer/admin/api/siteinfo/question
get site questions setting
PUT /answer/admin/api/siteinfo/question
update site question settings
GET /answer/admin/api/siteinfo/security
Get the security information for the site
PUT /answer/admin/api/siteinfo/security
update site security configuration
GET /answer/admin/api/siteinfo/seo
get site seo information
PUT /answer/admin/api/siteinfo/seo
update site seo information
GET /answer/admin/api/siteinfo/tag
get site tags setting
PUT /answer/admin/api/siteinfo/tag
update site tag settings
GET /answer/admin/api/siteinfo/theme
get site info theme config
PUT /answer/admin/api/siteinfo/theme
update site custom css html config
GET /answer/admin/api/siteinfo/users
get site user config
PUT /answer/admin/api/siteinfo/users
update site info config about users
GET /answer/admin/api/siteinfo/users-settings
get site interface
PUT /answer/admin/api/siteinfo/users-settings
update site info users settings
GET /answer/admin/api/theme/options
Get theme options
POST /answer/admin/api/user
add user
GET /answer/admin/api/user/activation
get user activation
PUT /answer/admin/api/user/password
update user password
PUT /answer/admin/api/user/profile
edit user profile
PUT /answer/admin/api/user/role
update user role
PUT /answer/admin/api/user/status
update user
POST /answer/admin/api/users
add users
POST /answer/admin/api/users/activation
send user activation
GET /answer/admin/api/users/page
get user page
GET /answer/api/v1/activity/timeline
get object timeline
GET /answer/api/v1/activity/timeline/detail
get object timeline detail
GET /answer/api/v1/ai/conversation
get conversation detail
GET /answer/api/v1/ai/conversation/page
get conversation list
POST /answer/api/v1/ai/conversation/vote
vote record
PUT /answer/api/v1/answer
Update Answer
POST /answer/api/v1/answer
Add Answer
DELETE /answer/api/v1/answer
delete answer
POST /answer/api/v1/answer/acceptance
Accept Answer
GET /answer/api/v1/answer/info
Get Answer Detail
GET /answer/api/v1/answer/page
AnswerList
POST /answer/api/v1/answer/recover
recover answer
GET /answer/api/v1/badge
get badge info
GET /answer/api/v1/badge/awards/page
get badge award list
GET /answer/api/v1/badge/user/awards
get user badge award list
GET /answer/api/v1/badge/user/awards/recent
get user badge award list
GET /answer/api/v1/badges
list all badges group by group
POST /answer/api/v1/collection/switch
add collection
GET /answer/api/v1/comment
get comment by id
PUT /answer/api/v1/comment
update comment
POST /answer/api/v1/comment
add comment
DELETE /answer/api/v1/comment
remove comment
GET /answer/api/v1/comment/page
get comment page
POST /answer/api/v1/connector/binding/email
external login binding user send email
GET /answer/api/v1/connector/info
get all enabled connectors
GET /answer/api/v1/connector/user/info
get all connectors info about user
DELETE /answer/api/v1/connector/user/unbinding
unbind external user login
GET /answer/api/v1/embed/config
get embed plugin config
POST /answer/api/v1/file
upload file
Raw JSON Specification
{
  "swagger": "2.0",
  "info": {
    "description": "Apache Answer API",
    "title": "Apache Answer",
    "contact": {}
  },
  "basePath": "/",
  "paths": {
    "/": {
      "get": {
        "description": "if config file not exist try to redirect to install page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "installation"
        ],
        "summary": "if config file not exist try to redirect to install page",
        "responses": {}
      }
    },
    "/answer/admin/api/ai-config": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get AI configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get AI configuration",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteAIResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update AI configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update AI configuration",
        "parameters": [
          {
            "description": "AI config",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteAIReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/ai-models": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get AI models",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get AI models",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetAIModelResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/ai-provider": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get AI provider configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get AI provider configuration",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetAIProviderResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/ai/conversation": {
      "get": {
        "description": "get conversation detail for admin",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation-admin"
        ],
        "summary": "get conversation detail for admin",
        "parameters": [
          {
            "type": "string",
            "description": "conversation id",
            "name": "conversation_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.AIConversationAdminDetailResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "delete": {
        "description": "delete conversation and its related records for admin",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation-admin"
        ],
        "summary": "delete conversation for admin",
        "parameters": [
          {
            "description": "apikey",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AIConversationAdminDeleteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/ai/conversation/page": {
      "get": {
        "description": "get conversation list for admin",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation-admin"
        ],
        "summary": "get conversation list for admin",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.AIConversationAdminListItem"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/answer/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Status:[available,deleted,pending]",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "AdminAnswerPage admin answer page",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "enum": [
              "available",
              "deleted",
              "pending"
            ],
            "type": "string",
            "description": "user status",
            "name": "status",
            "in": "query"
          },
          {
            "type": "string",
            "description": "answer id or question title",
            "name": "query",
            "in": "query"
          },
          {
            "type": "string",
            "description": "question id",
            "name": "question_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/answer/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update answer status",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update answer status",
        "parameters": [
          {
            "description": "AdminUpdateAnswerStatusReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AdminUpdateAnswerStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/api-key": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update apikey",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update apikey",
        "parameters": [
          {
            "description": "apikey",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateAPIKeyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add apikey",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "add apikey",
        "parameters": [
          {
            "description": "apikey",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddAPIKeyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.AddAPIKeyResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "delete apikey",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "delete apikey",
        "parameters": [
          {
            "description": "apikey",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.DeleteAPIKeyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/api-key/all": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get all api keys",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get all api keys",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetAPIKeyResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/badge/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update badge status",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminBadge"
        ],
        "summary": "update badge status",
        "parameters": [
          {
            "description": "UpdateBadgeStatusReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateBadgeStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/badges": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "list all badges by page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminBadge"
        ],
        "summary": "list all badges by page",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "enum": [
              "",
              "active",
              "inactive"
            ],
            "type": "string",
            "description": "badge status",
            "name": "status",
            "in": "query"
          },
          {
            "type": "string",
            "description": "search param",
            "name": "q",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetBadgeListPagedResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/dashboard": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "DashboardInfo",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "DashboardInfo",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/delete/permanently": {
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "delete permanently",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "delete permanently",
        "parameters": [
          {
            "description": "DeletePermanentlyReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.DeletePermanentlyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/language/options": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Get language options",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Lang"
        ],
        "summary": "Get language options",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/mcp-config": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get MCP configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get MCP configuration",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteMCPResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update MCP configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update MCP configuration",
        "parameters": [
          {
            "description": "MCP config",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteMCPReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/plugin/config": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get plugin config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminPlugin"
        ],
        "summary": "get plugin config",
        "parameters": [
          {
            "type": "string",
            "description": "plugin_slug_name",
            "name": "plugin_slug_name",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetPluginConfigResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update plugin config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminPlugin"
        ],
        "summary": "update plugin config",
        "parameters": [
          {
            "description": "UpdatePluginConfigReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdatePluginConfigReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/plugin/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update plugin status",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminPlugin"
        ],
        "summary": "update plugin status",
        "parameters": [
          {
            "description": "UpdatePluginStatusReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdatePluginStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/plugins": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get plugin list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "AdminPlugin"
        ],
        "summary": "get plugin list",
        "parameters": [
          {
            "type": "string",
            "description": "status: active/inactive",
            "name": "status",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "have config",
            "name": "have_config",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetPluginListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/question/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Status:[available,closed,deleted,pending]",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "AdminQuestionPage admin question page",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "enum": [
              "available",
              "closed",
              "deleted",
              "pending"
            ],
            "type": "string",
            "description": "user status",
            "name": "status",
            "in": "query"
          },
          {
            "type": "string",
            "description": "question id or title",
            "name": "query",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/question/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update question status",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update question status",
        "parameters": [
          {
            "description": "AdminUpdateQuestionStatusReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AdminUpdateQuestionStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/reasons": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get reasons by object type and action",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "reason"
        ],
        "summary": "get reasons by object type and action",
        "parameters": [
          {
            "enum": [
              "question",
              "answer",
              "comment",
              "user"
            ],
            "type": "string",
            "description": "object_type",
            "name": "object_type",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "status",
              "close",
              "flag",
              "review"
            ],
            "type": "string",
            "description": "action",
            "name": "action",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/roles": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get role list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get role list",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetRoleResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/setting/privileges": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "GetPrivilegesConfig get privileges config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "GetPrivilegesConfig get privileges config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetPrivilegesConfigResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update privileges config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update privileges config",
        "parameters": [
          {
            "description": "config",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdatePrivilegesConfigReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/setting/smtp": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "GetSMTPConfig get smtp config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "GetSMTPConfig get smtp config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetSMTPConfigResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update smtp config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update smtp config",
        "parameters": [
          {
            "description": "smtp config",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateSMTPConfigReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/advanced": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site advanced setting",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site advanced setting",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteAdvancedResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site advanced info",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site advanced info",
        "parameters": [
          {
            "description": "advanced settings",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteAdvancedReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/branding": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site interface",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site interface",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteBrandingResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site info branding",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site info branding",
        "parameters": [
          {
            "description": "branding info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteBrandingReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/custom-css-html": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site info custom html css config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site info custom html css config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteCustomCssHTMLResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site custom css html config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site custom css html config",
        "parameters": [
          {
            "description": "login info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteCustomCssHTMLReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/general": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site general information",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site general information",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteGeneralResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site general information",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site general information",
        "parameters": [
          {
            "description": "general",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteGeneralReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/interface": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site interface",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site interface",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteInterfaceSettingsResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site info interface",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site info interface",
        "parameters": [
          {
            "description": "general",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteInterfaceReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/login": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site info login config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site info login config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteLoginResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site login",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site login",
        "parameters": [
          {
            "description": "login info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteLoginReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/polices": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Get the policies information for the site",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "Get the policies information for the site",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SitePoliciesResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site policies configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site policies configuration",
        "parameters": [
          {
            "description": "write info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SitePoliciesReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/question": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site questions setting",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site questions setting",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteQuestionsResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site question settings",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site question settings",
        "parameters": [
          {
            "description": "questions settings",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteQuestionsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/security": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Get the security information for the site",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "Get the security information for the site",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteSecurityResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site security configuration",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site security configuration",
        "parameters": [
          {
            "description": "write info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteSecurityReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/seo": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site seo information",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site seo information",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteSeoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site seo information",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site seo information",
        "parameters": [
          {
            "description": "seo",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteSeoReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/tag": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site tags setting",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site tags setting",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteTagsResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site tag settings",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site tag settings",
        "parameters": [
          {
            "description": "tags settings",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteTagsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/theme": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site info theme config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site info theme config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteThemeResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site custom css html config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site custom css html config",
        "parameters": [
          {
            "description": "login info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteThemeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/users": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site user config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site user config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteUsersResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site info config about users",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site info config about users",
        "parameters": [
          {
            "description": "users info",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteUsersReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/siteinfo/users-settings": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get site interface",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get site interface",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteUsersSettingsResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update site info users settings",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update site info users settings",
        "parameters": [
          {
            "description": "general",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SiteUsersSettingsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/theme/options": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Get theme options",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "Get theme options",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/user": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add user",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "add user",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddUserReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/user/activation": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user activation",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get user activation",
        "parameters": [
          {
            "type": "string",
            "description": "user id",
            "name": "user_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetUserActivationResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/admin/api/user/password": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user password",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update user password",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserPasswordReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/user/profile": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "edit user profile",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "edit user profile",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.EditUserProfileReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/user/role": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user role",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update user role",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserRoleReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/user/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "update user",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserStatusReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/users": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add users",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "add users",
        "parameters": [
          {
            "description": "user",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddUsersReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/users/activation": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "send user activation",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "send user activation",
        "parameters": [
          {
            "description": "SendUserActivationReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.SendUserActivationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/admin/api/users/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user page",
        "produces": [
          "application/json"
        ],
        "tags": [
          "admin"
        ],
        "summary": "get user page",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "search query: email, username or id:[id]",
            "name": "query",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "staff user",
            "name": "staff",
            "in": "query"
          },
          {
            "enum": [
              "suspended",
              "deleted",
              "inactive"
            ],
            "type": "string",
            "description": "user status",
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "records": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetUserPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/activity/timeline": {
      "get": {
        "description": "get object timeline",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "get object timeline",
        "parameters": [
          {
            "type": "string",
            "description": "object id",
            "name": "object_id",
            "in": "query"
          },
          {
            "type": "string",
            "description": "tag slug name",
            "name": "tag_slug_name",
            "in": "query"
          },
          {
            "enum": [
              "question",
              "answer",
              "tag"
            ],
            "type": "string",
            "description": "object type",
            "name": "object_type",
            "in": "query"
          },
          {
            "type": "boolean",
            "description": "is show vote",
            "name": "show_vote",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetObjectTimelineResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/activity/timeline/detail": {
      "get": {
        "description": "get object timeline detail",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "get object timeline detail",
        "parameters": [
          {
            "type": "string",
            "description": "revision id",
            "name": "revision_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetObjectTimelineResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/ai/conversation": {
      "get": {
        "description": "get conversation detail",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation"
        ],
        "summary": "get conversation detail",
        "parameters": [
          {
            "type": "string",
            "description": "conversation id",
            "name": "conversation_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.AIConversationDetailResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/ai/conversation/page": {
      "get": {
        "description": "get conversation list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation"
        ],
        "summary": "get conversation list",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.AIConversationListItem"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/ai/conversation/vote": {
      "post": {
        "description": "vote record",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "ai-conversation"
        ],
        "summary": "vote record",
        "parameters": [
          {
            "description": "vote request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AIConversationVoteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/answer": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Update Answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "Update Answer",
        "parameters": [
          {
            "description": "AnswerUpdateReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AnswerUpdateReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "Add Answer",
        "parameters": [
          {
            "description": "add answer request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AnswerAddReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "delete answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "delete answer",
        "parameters": [
          {
            "description": "answer",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RemoveAnswerReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/answer/acceptance": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Accept Answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "Accept Answer",
        "parameters": [
          {
            "description": "AcceptAnswerReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AcceptAnswerReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/answer/info": {
      "get": {
        "description": "Get Answer Detail",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "Get Answer Detail",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetAnswerInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/answer/page": {
      "get": {
        "description": "AnswerList <br> <b>order</b> (default or updated)",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "AnswerList",
        "parameters": [
          {
            "type": "string",
            "description": "question_id",
            "name": "question_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "order",
            "name": "order",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "page",
            "name": "page",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "page_size",
            "name": "page_size",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/answer/recover": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "recover the deleted answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Answer"
        ],
        "summary": "recover answer",
        "parameters": [
          {
            "description": "answer",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RecoverAnswerReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/badge": {
      "get": {
        "description": "get badge info",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "api-badge"
        ],
        "summary": "get badge info",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "id",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetBadgeInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/badge/awards/page": {
      "get": {
        "description": "get badge award list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "api-badge"
        ],
        "summary": "get badge award list",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "badge id",
            "name": "badge_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "only list the award by username",
            "name": "username",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetBadgeInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/badge/user/awards": {
      "get": {
        "description": "get user badge award list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "api-badge"
        ],
        "summary": "get user badge award list",
        "parameters": [
          {
            "type": "string",
            "description": "user name",
            "name": "username",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetUserBadgeAwardListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/badge/user/awards/recent": {
      "get": {
        "description": "get user badge award list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "api-badge"
        ],
        "summary": "get user badge award list",
        "parameters": [
          {
            "type": "string",
            "description": "user name",
            "name": "username",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetUserBadgeAwardListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/badges": {
      "get": {
        "description": "list all badges group by group",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "api-badge"
        ],
        "summary": "list all badges group by group",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetBadgeListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/collection/switch": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add collection",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Collection"
        ],
        "summary": "add collection",
        "parameters": [
          {
            "description": "collection",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.CollectionSwitchReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.CollectionSwitchResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/comment": {
      "get": {
        "description": "get comment by id",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "get comment by id",
        "parameters": [
          {
            "type": "string",
            "description": "id",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetCommentResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update comment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "update comment",
        "parameters": [
          {
            "description": "comment",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateCommentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add comment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "add comment",
        "parameters": [
          {
            "description": "comment",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddCommentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetCommentResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "remove comment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "remove comment",
        "parameters": [
          {
            "description": "comment",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RemoveCommentReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/comment/page": {
      "get": {
        "description": "get comment page",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "get comment page",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "object id",
            "name": "object_id",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "vote"
            ],
            "type": "string",
            "description": "query condition",
            "name": "query_cond",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetCommentResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/connector/binding/email": {
      "post": {
        "description": "external login binding user send email",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "PluginConnector"
        ],
        "summary": "external login binding user send email",
        "parameters": [
          {
            "description": "external login binding user send email",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.ExternalLoginBindingUserSendEmailReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.ExternalLoginBindingUserSendEmailResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/connector/info": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get all enabled connectors",
        "produces": [
          "application/json"
        ],
        "tags": [
          "PluginConnector"
        ],
        "summary": "get all enabled connectors",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.ConnectorInfoResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/connector/user/info": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get all connectors info about user",
        "produces": [
          "application/json"
        ],
        "tags": [
          "PluginConnector"
        ],
        "summary": "get all connectors info about user",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.ConnectorUserInfoResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/connector/user/unbinding": {
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "unbind external user login",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "PluginConnector"
        ],
        "summary": "unbind external user login",
        "parameters": [
          {
            "description": "ExternalLoginUnbindingReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.ExternalLoginUnbindingReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/embed/config": {
      "get": {
        "description": "get embed plugin config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Plugin"
        ],
        "summary": "get embed plugin config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/plugin.EmbedConfig"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/file": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "upload file",
        "consumes": [
          "multipart/form-data"
        ],
        "tags": [
          "Upload"
        ],
        "summary": "upload file",
        "parameters": [
          {
            "enum": [
              "post",
              "post_attachment",
              "avatar",
              "branding"
            ],
            "type": "string",
            "description": "identify the source of the file upload",
            "name": "source",
            "in": "formData",
            "required": true
          },
          {
            "type": "file",
            "description": "file",
            "name": "file",
            "in": "formData",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "string"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/follow": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "follow object or cancel follow operation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Activity"
        ],
        "summary": "follow object or cancel follow operation",
        "parameters": [
          {
            "description": "follow",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.FollowReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.FollowResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/follow/tags": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user follow tags",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Activity"
        ],
        "summary": "update user follow tags",
        "parameters": [
          {
            "description": "follow",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateFollowTagsReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/language/config": {
      "get": {
        "description": "get language config mapping",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Lang"
        ],
        "summary": "get language config mapping",
        "parameters": [
          {
            "type": "string",
            "description": "Accept-Language",
            "name": "Accept-Language",
            "in": "header",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/language/options": {
      "get": {
        "description": "Get language options",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Lang"
        ],
        "summary": "Get language options",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/meta/reaction": {
      "get": {
        "description": "get reaction for an object",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Meta"
        ],
        "summary": "get reaction",
        "parameters": [
          {
            "type": "string",
            "description": "object_id",
            "name": "object_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.ReactionRespItem"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update reaction. if not exist, add one",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Meta"
        ],
        "summary": "add or update reaction",
        "parameters": [
          {
            "description": "reaction",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateReactionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/notification/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get notification list",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Notification"
        ],
        "summary": "get notification list",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "enum": [
              "inbox",
              "achievement"
            ],
            "type": "string",
            "description": "type",
            "name": "type",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "all",
              "posts",
              "invites",
              "votes"
            ],
            "type": "string",
            "description": "inbox_type",
            "name": "inbox_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/notification/read/state": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "ClearUnRead",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Notification"
        ],
        "summary": "ClearUnRead",
        "parameters": [
          {
            "description": "NotificationClearIDRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.NotificationClearIDRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/notification/read/state/all": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "ClearUnRead",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Notification"
        ],
        "summary": "ClearUnRead",
        "parameters": [
          {
            "description": "NotificationClearRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.NotificationClearRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/notification/status": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "GetRedDot",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Notification"
        ],
        "summary": "GetRedDot",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "DelRedDot",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Notification"
        ],
        "summary": "DelRedDot",
        "parameters": [
          {
            "description": "NotificationClearRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.NotificationClearRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/permission": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "check user permission",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Permission"
        ],
        "summary": "check user permission",
        "parameters": [
          {
            "type": "string",
            "description": "access-token",
            "name": "Authorization",
            "in": "header",
            "required": true
          },
          {
            "enum": [
              "question.add",
              "question.edit",
              "question.edit_without_review",
              "question.delete",
              "question.close",
              "question.reopen",
              "question.vote_up",
              "question.vote_down",
              "question.pin",
              "question.unpin",
              "question.hide",
              "question.show",
              "answer.add",
              "answer.edit",
              "answer.edit_without_review",
              "answer.delete",
              "answer.accept",
              "answer.vote_up",
              "answer.vote_down",
              "answer.invite_someone_to_answer",
              "comment.add",
              "comment.edit",
              "comment.delete",
              "comment.vote_up",
              "comment.vote_down",
              "report.add",
              "tag.add",
              "tag.edit",
              "tag.edit_slug_name",
              "tag.edit_without_review",
              "tag.delete",
              "tag.synonym",
              "link.url_limit",
              "vote.detail",
              "answer.audit",
              "question.audit",
              "tag.audit",
              "tag.use_reserved_tag"
            ],
            "type": "string",
            "description": "permission key",
            "name": "action",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/answer/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "list personal answers",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Personal"
        ],
        "summary": "list personal answers",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "newest",
              "score"
            ],
            "type": "string",
            "description": "order",
            "name": "order",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "default": "0",
            "description": "page",
            "name": "page",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "default": "20",
            "description": "page_size",
            "name": "page_size",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/collection/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "list personal collections",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Collection"
        ],
        "summary": "list personal collections",
        "parameters": [
          {
            "type": "string",
            "default": "0",
            "description": "page",
            "name": "page",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "default": "20",
            "description": "page_size",
            "name": "page_size",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/comment/page": {
      "get": {
        "description": "user personal comment list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Comment"
        ],
        "summary": "user personal comment list",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "username",
            "name": "username",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetCommentPersonalWithPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/qa/top": {
      "get": {
        "description": "UserTop",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "UserTop",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/rank/page": {
      "get": {
        "description": "user personal rank list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Rank"
        ],
        "summary": "user personal rank list",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "username",
            "name": "username",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetRankPersonalPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/user/info": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "GetOtherUserInfoByUsername",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "GetOtherUserInfoByUsername",
        "parameters": [
          {
            "type": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetOtherUserInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/personal/vote/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user personal votes",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Activity"
        ],
        "summary": "get user personal votes",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetVoteWithPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/plugin/status": {
      "get": {
        "description": "get all plugins status",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Plugin"
        ],
        "summary": "get all plugins status",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetPluginListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/post/render": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "render post content",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Upload"
        ],
        "summary": "render post content",
        "parameters": [
          {
            "description": "PostRenderReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.PostRenderReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "update question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionUpdate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "add question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionAdd"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "delete question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "delete question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RemoveQuestionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/answer": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add question and answer",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "add question and answer",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionAddByAnswer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/info": {
      "get": {
        "description": "get question details",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "get question details",
        "parameters": [
          {
            "type": "string",
            "default": "1",
            "description": "Question TagID",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/invite": {
      "get": {
        "description": "get question invite user info",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "get question invite user info",
        "parameters": [
          {
            "type": "string",
            "default": "1",
            "description": "Question ID",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update question invite user",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "update question invite user",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionUpdateInviteUser"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/link": {
      "get": {
        "description": "get question link",
        "tags": [
          "Question"
        ],
        "summary": "get question link",
        "parameters": [
          {
            "minimum": 1,
            "type": "integer",
            "name": "in_days",
            "in": "query"
          },
          {
            "enum": [
              "newest",
              "active",
              "hot",
              "score",
              "unanswered",
              "recommend",
              "frequent"
            ],
            "type": "string",
            "name": "order",
            "in": "query"
          },
          {
            "minimum": 1,
            "type": "integer",
            "name": "page",
            "in": "query"
          },
          {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "name": "question_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.QuestionPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/question/operation": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Operation question \\n operation [pin unpin hide show]",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "Operation question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.OperationQuestionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/page": {
      "get": {
        "description": "get questions by page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "get questions by page",
        "parameters": [
          {
            "description": "QuestionPageReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionPageReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.QuestionPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/question/recommend/page": {
      "get": {
        "description": "get recommend questions by page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "get recommend questions by page",
        "parameters": [
          {
            "description": "QuestionPageReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionPageReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.QuestionPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/question/recover": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "recover deleted question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "recover deleted question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.QuestionRecoverReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/reopen": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "reopen question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "reopen question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.ReopenQuestionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/similar": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "fuzzy query similar questions based on title",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "fuzzy query similar questions based on title",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "title",
            "name": "title",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/similar/tag": {
      "get": {
        "description": "Search Similar Question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "Search Similar Question",
        "parameters": [
          {
            "type": "string",
            "default": "",
            "description": "question_id",
            "name": "question_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/status": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "Close question",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Question"
        ],
        "summary": "Close question",
        "parameters": [
          {
            "description": "question",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.CloseQuestionReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/question/tags": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get tag list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get tag list",
        "parameters": [
          {
            "type": "string",
            "description": "tag",
            "name": "tag",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetTagBasicResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/reasons": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get reasons by object type and action",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "reason"
        ],
        "summary": "get reasons by object type and action",
        "parameters": [
          {
            "enum": [
              "question",
              "answer",
              "comment",
              "user"
            ],
            "type": "string",
            "description": "object_type",
            "name": "object_type",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "status",
              "close",
              "flag",
              "review"
            ],
            "type": "string",
            "description": "action",
            "name": "action",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/render/config": {
      "get": {
        "description": "GetRenderConfig",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "PluginRender"
        ],
        "summary": "GetRenderConfig",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/plugin.RenderConfig"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/report": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add report <br> source (question, answer, comment, user)",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Report"
        ],
        "summary": "add report",
        "parameters": [
          {
            "description": "report",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddReportReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/report/review": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "review report",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Report"
        ],
        "summary": "review report",
        "parameters": [
          {
            "description": "flag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.ReviewReportReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/report/unreviewed/post": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get unreviewed report post page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Report"
        ],
        "summary": "get unreviewed report post page",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetReportListPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/review/pending/post": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update review",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Review"
        ],
        "summary": "update review",
        "parameters": [
          {
            "description": "review",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateReviewReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/review/pending/post/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get unreviewed post page",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Review"
        ],
        "summary": "get unreviewed post page",
        "parameters": [
          {
            "type": "integer",
            "description": "page",
            "name": "page",
            "in": "query"
          },
          {
            "type": "string",
            "description": "object_id",
            "name": "object_id",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetUnreviewedPostPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/reviewing/type": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get reviewing type",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Revision"
        ],
        "summary": "get reviewing type",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetReviewingTypeResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/revisions": {
      "get": {
        "description": "get revision list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Revision"
        ],
        "summary": "get revision list",
        "parameters": [
          {
            "type": "string",
            "description": "object id",
            "name": "object_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetRevisionResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/revisions/audit": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "revision audit operation:approve or reject",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Revision"
        ],
        "summary": "revision audit",
        "parameters": [
          {
            "description": "audit",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RevisionAuditReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/revisions/edit/check": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "check can update revision",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Revision"
        ],
        "summary": "check can update revision",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "id",
            "name": "id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/revisions/unreviewed": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get unreviewed revision list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Revision"
        ],
        "summary": "get unreviewed revision list",
        "parameters": [
          {
            "type": "string",
            "description": "page id",
            "name": "page",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetUnreviewedRevisionResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/search": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "search object",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Search"
        ],
        "summary": "search object",
        "parameters": [
          {
            "type": "string",
            "description": "query string",
            "name": "q",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "newest",
              "active",
              "score",
              "relevance"
            ],
            "type": "string",
            "description": "order",
            "name": "order",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SearchResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/search/desc": {
      "get": {
        "description": "get search description",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Search"
        ],
        "summary": "get search description",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SearchResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/siteinfo": {
      "get": {
        "description": "get site info",
        "produces": [
          "application/json"
        ],
        "tags": [
          "site"
        ],
        "summary": "get site info",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.SiteInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/siteinfo/legal": {
      "get": {
        "description": "get site legal info",
        "produces": [
          "application/json"
        ],
        "tags": [
          "site"
        ],
        "summary": "get site legal info",
        "parameters": [
          {
            "enum": [
              "tos",
              "privacy"
            ],
            "type": "string",
            "description": "legal information type",
            "name": "info_type",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetSiteLegalInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/tag": {
      "get": {
        "description": "get tag one",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get tag one",
        "parameters": [
          {
            "type": "string",
            "description": "tag id",
            "name": "tag_id",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "tag name",
            "name": "tag_name",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetTagResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "update tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateTagReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "add tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddTagReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "delete": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "delete tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "delete tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RemoveTagReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/tag/merge": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "merge tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "merge tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.AddTagReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/tag/recover": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "recover delete tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "recover delete tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.RecoverTagReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/tag/synonym": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update tag",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "update tag",
        "parameters": [
          {
            "description": "tag",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateTagSynonymReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/tag/synonyms": {
      "get": {
        "description": "get tag synonyms",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get tag synonyms",
        "parameters": [
          {
            "type": "integer",
            "description": "tag id",
            "name": "tag_id",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetTagSynonymsResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/tags": {
      "get": {
        "description": "get tags list by slug name",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get tags list",
        "parameters": [
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "description": "string collection",
            "name": "tags",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetTagBasicResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/tags/following": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get following tag list",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get following tag list",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetFollowingTagsResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/tags/page": {
      "get": {
        "description": "get tag page",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Tag"
        ],
        "summary": "get tag page",
        "parameters": [
          {
            "type": "integer",
            "description": "page size",
            "name": "page",
            "in": "query"
          },
          {
            "type": "integer",
            "description": "page size",
            "name": "page_size",
            "in": "query"
          },
          {
            "type": "string",
            "description": "slug_name",
            "name": "slug_name",
            "in": "query"
          },
          {
            "enum": [
              "popular",
              "name",
              "newest"
            ],
            "type": "string",
            "description": "query condition",
            "name": "query_cond",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "allOf": [
                        {
                          "$ref": "#/definitions/pager.PageModel"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "list": {
                              "type": "array",
                              "items": {
                                "$ref": "#/definitions/schema.GetTagPageResp"
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/action/record": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "ActionRecord",
        "tags": [
          "User"
        ],
        "summary": "ActionRecord",
        "parameters": [
          {
            "enum": [
              "login",
              "e_mail",
              "find_pass"
            ],
            "type": "string",
            "description": "action",
            "name": "action",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.ActionRecordResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/email": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "user change email verification",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "user change email verification",
        "parameters": [
          {
            "description": "UserChangeEmailVerifyReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserChangeEmailVerifyReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/email/change/code": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "send email to the user email then change their email",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "send email to the user email then change their email",
        "parameters": [
          {
            "description": "UserChangeEmailSendCodeReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserChangeEmailSendCodeReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/email/verification": {
      "post": {
        "description": "UserVerifyEmail",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserVerifyEmail",
        "parameters": [
          {
            "type": "string",
            "default": "",
            "description": "code",
            "name": "code",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.UserLoginResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/email/verification/send": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "UserVerifyEmailSend",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserVerifyEmailSend",
        "parameters": [
          {
            "type": "string",
            "default": "",
            "description": "captcha_id",
            "name": "captcha_id",
            "in": "query"
          },
          {
            "type": "string",
            "default": "",
            "description": "captcha_code",
            "name": "captcha_code",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/info": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user info, if user no login response http code is 200, but user info is null",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "GetUserInfoByUserID",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetCurrentLoginUserInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "UserUpdateInfo update user info",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserUpdateInfo update user info",
        "parameters": [
          {
            "type": "string",
            "description": "access-token",
            "name": "Authorization",
            "in": "header",
            "required": true
          },
          {
            "description": "UpdateInfoRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateInfoRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/info/search": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "SearchUserListByName",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "SearchUserListByName",
        "parameters": [
          {
            "type": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetOtherUserInfoResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/interface": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "UserUpdateInterface update user interface config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserUpdateInterface update user interface config",
        "parameters": [
          {
            "type": "string",
            "description": "access-token",
            "name": "Authorization",
            "in": "header",
            "required": true
          },
          {
            "description": "UpdateInfoRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserInterfaceRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/login/email": {
      "post": {
        "description": "UserEmailLogin",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserEmailLogin",
        "parameters": [
          {
            "description": "UserEmailLogin",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserEmailLoginReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.UserLoginResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/logout": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "user logout",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "user logout",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/notification/config": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user's notification config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "update user's notification config",
        "parameters": [
          {
            "description": "UpdateUserNotificationConfigReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserNotificationConfigReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      },
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user's notification config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "get user's notification config",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetUserNotificationConfigResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/notification/unsubscribe": {
      "put": {
        "description": "unsubscribe notification",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "unsubscribe notification",
        "parameters": [
          {
            "description": "UserUnsubscribeNotificationReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserUnsubscribeNotificationReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/password": {
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "UserModifyPassWord",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserModifyPassWord",
        "parameters": [
          {
            "description": "UserModifyPasswordReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserModifyPasswordReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/password/replacement": {
      "post": {
        "description": "UseRePassWord",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UseRePassWord",
        "parameters": [
          {
            "description": "UserRePassWordRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserRePassWordRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/password/reset": {
      "post": {
        "description": "RetrievePassWord",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "RetrievePassWord",
        "parameters": [
          {
            "description": "UserRetrievePassWordRequest",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserRetrievePassWordRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/plugin/config": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get user plugin config",
        "produces": [
          "application/json"
        ],
        "tags": [
          "UserPlugin"
        ],
        "summary": "get user plugin config",
        "parameters": [
          {
            "type": "string",
            "description": "plugin_slug_name",
            "name": "plugin_slug_name",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetPluginConfigResp"
                    }
                  }
                }
              ]
            }
          }
        }
      },
      "put": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "update user plugin config",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "UserPlugin"
        ],
        "summary": "update user plugin config",
        "parameters": [
          {
            "description": "UpdatePluginConfigReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UpdateUserPluginConfigReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/answer/api/v1/user/plugin/configs": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "get plugin list that used for user.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "UserPlugin"
        ],
        "summary": "get plugin list that used for user.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/schema.GetUserPluginListResp"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/ranking": {
      "get": {
        "description": "get user ranking",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "get user ranking",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.UserRankingResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/register/email": {
      "post": {
        "description": "UserRegisterByEmail",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "UserRegisterByEmail",
        "parameters": [
          {
            "description": "UserRegisterReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.UserRegisterReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.UserLoginResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/user/staff": {
      "get": {
        "description": "get user staff",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "User"
        ],
        "summary": "get user staff",
        "parameters": [
          {
            "type": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "description": "page_size",
            "name": "page_size",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.GetUserStaffResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/vote/down": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add vote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Activity"
        ],
        "summary": "vote down",
        "parameters": [
          {
            "description": "vote",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.VoteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.VoteResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/answer/api/v1/vote/up": {
      "post": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "add vote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Activity"
        ],
        "summary": "vote up",
        "parameters": [
          {
            "description": "vote",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/schema.VoteReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/schema.VoteResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/custom.css": {
      "get": {
        "description": "get site custom CSS",
        "produces": [
          "text/css"
        ],
        "tags": [
          "site"
        ],
        "summary": "get site custom CSS",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/installation/base-info": {
      "post": {
        "description": "init base info",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "installation"
        ],
        "summary": "init base info",
        "parameters": [
          {
            "description": "InitBaseInfoReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/install.InitBaseInfoReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/installation/config-file/check": {
      "post": {
        "description": "check config file if exist when installation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "installation"
        ],
        "summary": "check config file if exist when installation",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/install.CheckConfigFileResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/installation/db/check": {
      "post": {
        "description": "check database if exist when installation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "installation"
        ],
        "summary": "check database if exist when installation",
        "parameters": [
          {
            "description": "CheckDatabaseReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/install.CheckDatabaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/definitions/install.CheckConfigFileResp"
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/installation/init": {
      "post": {
        "description": "init environment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "installation"
        ],
        "summary": "init environment",
        "parameters": [
          {
            "description": "CheckDatabaseReq",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/install.CheckDatabaseReq"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/installation/language/config": {
      "get": {
        "description": "get installation language config mapping",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Lang"
        ],
        "summary": "get installation language config mapping",
        "parameters": [
          {
            "type": "string",
            "description": "installation language",
            "name": "lang",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/installation/language/options": {
      "get": {
        "description": "get installation language options",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Lang"
        ],
        "summary": "get installation language options",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/definitions/handler.RespBody"
                },
                {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/definitions/translator.LangOption"
                      }
                    }
                  }
                }
              ]
            }
          }
        }
      }
    },
    "/personal/question/page": {
      "get": {
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "list personal questions",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Personal"
        ],
        "summary": "list personal questions",
        "parameters": [
          {
            "type": "string",
            "default": "string",
            "description": "username",
            "name": "username",
            "in": "query",
            "required": true
          },
          {
            "enum": [
              "newest",
              "score"
            ],
            "type": "string",
            "description": "order",
            "name": "order",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "default": "0",
            "description": "page",
            "name": "page",
            "in": "query",
            "required": true
          },
          {
            "type": "string",
            "default": "20",
            "description": "page_size",
            "name": "page_size",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/handler.RespBody"
            }
          }
        }
      }
    },
    "/robots.txt": {
      "get": {
        "description": "get site robots information",
        "produces": [
          "application/json"
        ],
        "tags": [
          "site"
        ],
        "summary": "get site robots information",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "constant.NotificationChannelKey": {
      "type": "string",
      "enum": [
        "email"
      ],
      "x-enum-varnames": [
        "EmailChannel"
      ]
    },
    "constant.Privilege": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "value": {
          "type": "integer",
          "minimum": 1
        }
      }
    },
    "entity.BadgeLevel": {
      "type": "integer",
      "enum": [
        1,
        2,
        3
      ],
      "x-enum-varnames": [
        "BadgeLevelBronze",
        "BadgeLevelSilver",
        "BadgeLevelGold"
      ]
    },
    "handler.RespBody": {
      "type": "object",
      "properties": {
        "code": {
          "description": "http code",
          "type": "integer"
        },
        "data": {
          "description": "response data"
        },
        "msg": {
          "description": "response message",
          "type": "string"
        },
        "reason": {
          "description": "reason key",
          "type": "string"
        }
      }
    },
    "install.CheckConfigFileResp": {
      "type": "object",
      "properties": {
        "config_file_exist": {
          "type": "boolean"
        },
        "db_connection_success": {
          "type": "boolean"
        },
        "db_table_exist": {
          "type": "boolean"
        }
      }
    },
    "install.CheckDatabaseReq": {
      "type": "object",
      "required": [
        "db_type"
      ],
      "properties": {
        "db_file": {
          "type": "string"
        },
        "db_host": {
          "type": "string"
        },
        "db_name": {
          "type": "string"
        },
        "db_password": {
          "type": "string"
        },
        "db_type": {
          "type": "string",
          "enum": [
            "postgres",
            "sqlite3",
            "mysql"
          ]
        },
        "db_username": {
          "type": "string"
        },
        "ssl_cert": {
          "type": "string"
        },
        "ssl_enabled": {
          "type": "boolean"
        },
        "ssl_key": {
          "type": "string"
        },
        "ssl_mode": {
          "type": "string"
        },
        "ssl_root_cert": {
          "type": "string"
        }
      }
    },
    "install.InitBaseInfoReq": {
      "type": "object",
      "required": [
        "contact_email",
        "email",
        "external_content_display",
        "lang",
        "name",
        "password",
        "site_name",
        "site_url"
      ],
      "properties": {
        "contact_email": {
          "type": "string",
          "maxLength": 500
        },
        "email": {
          "type": "string",
          "maxLength": 500
        },
        "external_content_display": {
          "type": "string",
          "enum": [
            "always_display",
            "ask_before_display"
          ]
        },
        "lang": {
          "type": "string",
          "maxLength": 30
        },
        "login_required": {
          "type": "boolean"
        },
        "name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "password": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        },
        "site_name": {
          "type": "string",
          "maxLength": 30
        },
        "site_url": {
          "type": "string",
          "maxLength": 512
        }
      }
    },
    "pager.PageModel": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "list": {}
      }
    },
    "plugin.EmbedConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean"
        },
        "platform": {
          "type": "string"
        }
      }
    },
    "plugin.RenderConfig": {
      "type": "object",
      "properties": {
        "select_theme": {
          "type": "string"
        }
      }
    },
    "schema.AIConversationAdminDeleteReq": {
      "type": "object",
      "required": [
        "conversation_id"
      ],
      "properties": {
        "conversation_id": {
          "type": "string"
        }
      }
    },
    "schema.AIConversationAdminDetailResp": {
      "type": "object",
      "properties": {
        "conversation_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "records": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.AIConversationRecord"
          }
        },
        "topic": {
          "type": "string"
        },
        "user_info": {
          "$ref": "#/definitions/schema.AIConversationUserInfo"
        }
      }
    },
    "schema.AIConversationAdminListItem": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "helpful_count": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "topic": {
          "type": "string"
        },
        "unhelpful_count": {
          "type": "integer"
        },
        "user_info": {
          "$ref": "#/definitions/schema.AIConversationUserInfo"
        }
      }
    },
    "schema.AIConversationDetailResp": {
      "type": "object",
      "properties": {
        "conversation_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "records": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.AIConversationRecord"
          }
        },
        "topic": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "schema.AIConversationListItem": {
      "type": "object",
      "properties": {
        "conversation_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "topic": {
          "type": "string"
        }
      }
    },
    "schema.AIConversationRecord": {
      "type": "object",
      "properties": {
        "chat_completion_id": {
          "type": "string"
        },
        "content": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "helpful": {
          "type": "integer"
        },
        "reasoning_content": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "unhelpful": {
          "type": "integer"
        }
      }
    },
    "schema.AIConversationUserInfo": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "rank": {
          "type": "integer"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "schema.AIConversationVoteReq": {
      "type": "object",
      "required": [
        "chat_completion_id",
        "vote_type"
      ],
      "properties": {
        "cancel": {
          "type": "boolean"
        },
        "chat_completion_id": {
          "type": "string"
        },
        "vote_type": {
          "type": "string",
          "enum": [
            "helpful",
            "unhelpful"
          ]
        }
      }
    },
    "schema.AIPromptConfig": {
      "type": "object",
      "properties": {
        "en_us": {
          "type": "string"
        },
        "zh_cn": {
          "type": "string"
        }
      }
    },
    "schema.AcceptAnswerReq": {
      "type": "object",
      "required": [
        "question_id"
      ],
      "properties": {
        "answer_id": {
          "type": "string"
        },
        "question_id": {
          "type": "string",
          "maxLength": 30
        }
      }
    },
    "schema.ActObjectInfo": {
      "type": "object",
      "properties": {
        "answer_id": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "main_tag_slug_name": {
          "type": "string"
        },
        "object_type": {
          "type": "string"
        },
        "question_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "schema.ActObjectTimeline": {
      "type": "object",
      "properties": {
        "activity_id": {
          "type": "string"
        },
        "activity_type": {
          "type": "string"
        },
        "cancelled": {
          "type": "boolean"
        },
        "cancelled_at": {
          "type": "integer"
        },
        "comment": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "object_id": {
          "type": "string"
        },
        "object_type": {
          "type": "string"
        },
        "revision_id": {
          "type": "string"
        },
        "user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        }
      }
    },
    "schema.ActionRecordResp": {
      "type": "object",
      "properties": {
        "captcha_id": {
          "type": "string"
        },
        "captcha_img": {
          "type": "string"
        },
        "verify": {
          "type": "boolean"
        }
      }
    },
    "schema.AddAPIKeyReq": {
      "type": "object",
      "required": [
        "description",
        "scope"
      ],
      "properties": {
        "description": {
          "type": "string",
          "maxLength": 150
        },
        "scope": {
          "type": "string",
          "enum": [
            "read-only",
            "global"
          ]
        }
      }
    },
    "schema.AddAPIKeyResp": {
      "type": "object",
      "properties": {
        "access_key": {
          "type": "string"
        }
      }
    },
    "schema.AddCommentReq": {
      "type": "object",
      "required": [
        "object_id",
        "original_text"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "mention_username_list": {
          "description": "@ user id list",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        },
        "original_text": {
          "description": "original comment content",
          "type": "string",
          "maxLength": 600,
          "minLength": 2
        },
        "reply_comment_id": {
          "description": "reply comment id",
          "type": "string"
        }
      }
    },
    "schema.AddReportReq": {
      "type": "object",
      "required": [
        "object_id",
        "report_type"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "content": {
          "description": "report content",
          "type": "string",
          "maxLength": 500
        },
        "object_id": {
          "description": "object id",
          "type": "string",
          "maxLength": 20
        },
        "report_type": {
          "description": "report type",
          "type": "integer"
        }
      }
    },
    "schema.AddTagReq": {
      "type": "object",
      "required": [
        "display_name",
        "original_text",
        "slug_name"
      ],
      "properties": {
        "display_name": {
          "description": "display_name",
          "type": "string",
          "maxLength": 35
        },
        "original_text": {
          "description": "original text",
          "type": "string",
          "maxLength": 65536
        },
        "slug_name": {
          "description": "slug_name",
          "type": "string",
          "maxLength": 35
        }
      }
    },
    "schema.AddUserReq": {
      "type": "object",
      "required": [
        "display_name",
        "email",
        "password"
      ],
      "properties": {
        "display_name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "email": {
          "type": "string",
          "maxLength": 500
        },
        "password": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        }
      }
    },
    "schema.AddUsersReq": {
      "type": "object",
      "properties": {
        "users": {
          "description": "users info line by line",
          "type": "string"
        }
      }
    },
    "schema.AdminUpdateAnswerStatusReq": {
      "type": "object",
      "required": [
        "answer_id",
        "status"
      ],
      "properties": {
        "answer_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "available",
            "deleted"
          ]
        }
      }
    },
    "schema.AdminUpdateQuestionStatusReq": {
      "type": "object",
      "required": [
        "question_id",
        "status"
      ],
      "properties": {
        "question_id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "available",
            "closed",
            "deleted"
          ]
        }
      }
    },
    "schema.AnswerAddReq": {
      "type": "object",
      "required": [
        "content"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "content": {
          "type": "string",
          "maxLength": 65535,
          "minLength": 6
        },
        "question_id": {
          "type": "string"
        }
      }
    },
    "schema.AnswerInfo": {
      "type": "object",
      "properties": {
        "accepted": {
          "type": "integer"
        },
        "collected": {
          "type": "boolean"
        },
        "content": {
          "type": "string"
        },
        "create_time": {
          "type": "integer"
        },
        "html": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "member_actions": {
          "description": "MemberActions",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "question_id": {
          "type": "string"
        },
        "question_info": {
          "$ref": "#/definitions/schema.QuestionInfoResp"
        },
        "status": {
          "type": "integer"
        },
        "update_time": {
          "type": "integer"
        },
        "update_user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "vote_count": {
          "type": "integer"
        },
        "vote_status": {
          "type": "string"
        }
      }
    },
    "schema.AnswerUpdateReq": {
      "type": "object",
      "required": [
        "content"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "content": {
          "type": "string",
          "maxLength": 65535,
          "minLength": 6
        },
        "edit_summary": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "schema.AvatarInfo": {
      "type": "object",
      "properties": {
        "custom": {
          "type": "string",
          "maxLength": 200
        },
        "gravatar": {
          "type": "string",
          "maxLength": 200
        },
        "type": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.BadgeListInfo": {
      "type": "object",
      "properties": {
        "award_count": {
          "description": "badge award count",
          "type": "integer"
        },
        "earned_count": {
          "description": "badge earned count",
          "type": "integer"
        },
        "icon": {
          "description": "badge icon",
          "type": "string"
        },
        "id": {
          "description": "badge id",
          "type": "string"
        },
        "level": {
          "description": "badge level",
          "allOf": [
            {
              "$ref": "#/definitions/entity.BadgeLevel"
            }
          ]
        },
        "name": {
          "description": "badge name",
          "type": "string"
        }
      }
    },
    "schema.BadgeStatus": {
      "type": "string",
      "enum": [
        "active",
        "inactive"
      ],
      "x-enum-varnames": [
        "BadgeStatusActive",
        "BadgeStatusInactive"
      ]
    },
    "schema.CloseQuestionReq": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "close_msg": {
          "description": "close_type",
          "type": "string"
        },
        "close_type": {
          "description": "close_type",
          "type": "integer"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "schema.CollectionSwitchReq": {
      "type": "object",
      "required": [
        "group_id",
        "object_id"
      ],
      "properties": {
        "bookmark": {
          "type": "boolean"
        },
        "group_id": {
          "type": "string"
        },
        "object_id": {
          "type": "string"
        }
      }
    },
    "schema.CollectionSwitchResp": {
      "type": "object",
      "properties": {
        "object_collection_count": {
          "type": "integer"
        }
      }
    },
    "schema.ConfigField": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.ConfigFieldOption"
          }
        },
        "required": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "ui_options": {
          "$ref": "#/definitions/schema.ConfigFieldUIOptions"
        },
        "value": {}
      }
    },
    "schema.ConfigFieldOption": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "schema.ConfigFieldUIOptions": {
      "type": "object",
      "properties": {
        "action": {
          "$ref": "#/definitions/schema.UIOptionAction"
        },
        "class_name": {
          "type": "string"
        },
        "field_class_name": {
          "type": "string"
        },
        "input_type": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "placeholder": {
          "type": "string"
        },
        "rows": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "variant": {
          "type": "string"
        }
      }
    },
    "schema.ConnectorInfoResp": {
      "type": "object",
      "properties": {
        "icon": {
          "type": "string"
        },
        "link": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "schema.ConnectorUserInfoResp": {
      "type": "object",
      "properties": {
        "binding": {
          "type": "boolean"
        },
        "external_id": {
          "type": "string"
        },
        "icon": {
          "type": "string"
        },
        "link": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "schema.DeleteAPIKeyReq": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        }
      }
    },
    "schema.DeletePermanentlyReq": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "users",
            "questions",
            "answers"
          ]
        }
      }
    },
    "schema.EditUserProfileReq": {
      "type": "object",
      "required": [
        "display_name",
        "email",
        "user_id"
      ],
      "properties": {
        "display_name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "email": {
          "type": "string",
          "maxLength": 500
        },
        "user_id": {
          "type": "string"
        },
        "username": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        }
      }
    },
    "schema.ExternalLoginBindingUserSendEmailReq": {
      "type": "object",
      "required": [
        "binding_key",
        "email"
      ],
      "properties": {
        "binding_key": {
          "type": "string",
          "maxLength": 100
        },
        "email": {
          "type": "string",
          "maxLength": 512
        },
        "must": {
          "description": "If must is true, whatever email if exists, try to bind user.\nIf must is false, when email exist, will only be prompted with a warning.",
          "type": "boolean"
        }
      }
    },
    "schema.ExternalLoginBindingUserSendEmailResp": {
      "type": "object",
      "properties": {
        "access_token": {
          "type": "string"
        },
        "email_exist_and_must_be_confirmed": {
          "type": "boolean"
        }
      }
    },
    "schema.ExternalLoginUnbindingReq": {
      "type": "object",
      "required": [
        "external_id"
      ],
      "properties": {
        "external_id": {
          "type": "string",
          "maxLength": 128
        }
      }
    },
    "schema.FollowReq": {
      "type": "object",
      "required": [
        "object_id"
      ],
      "properties": {
        "is_cancel": {
          "description": "is cancel",
          "type": "boolean"
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        }
      }
    },
    "schema.FollowResp": {
      "type": "object",
      "properties": {
        "follows": {
          "description": "the followers of object",
          "type": "integer"
        },
        "is_followed": {
          "description": "if user is followed object will be true,otherwise false",
          "type": "boolean"
        }
      }
    },
    "schema.GetAIModelResp": {
      "type": "object",
      "properties": {
        "created": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "object": {
          "type": "string"
        },
        "owned_by": {
          "type": "string"
        }
      }
    },
    "schema.GetAIProviderResp": {
      "type": "object",
      "properties": {
        "default_api_host": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "schema.GetAPIKeyResp": {
      "type": "object",
      "properties": {
        "access_key": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "last_used_at": {
          "type": "integer"
        },
        "scope": {
          "type": "string"
        }
      }
    },
    "schema.GetAnswerInfoResp": {
      "type": "object",
      "properties": {
        "info": {
          "$ref": "#/definitions/schema.AnswerInfo"
        },
        "question": {
          "$ref": "#/definitions/schema.QuestionInfoResp"
        }
      }
    },
    "schema.GetBadgeInfoResp": {
      "type": "object",
      "properties": {
        "award_count": {
          "description": "badge award count",
          "type": "integer"
        },
        "description": {
          "description": "badge description",
          "type": "string"
        },
        "earned_count": {
          "description": "badge earned count",
          "type": "integer"
        },
        "icon": {
          "description": "badge icon",
          "type": "string"
        },
        "id": {
          "description": "badge id",
          "type": "string"
        },
        "is_single": {
          "description": "badge is single or multiple",
          "type": "boolean"
        },
        "level": {
          "description": "badge level",
          "allOf": [
            {
              "$ref": "#/definitions/entity.BadgeLevel"
            }
          ]
        },
        "name": {
          "description": "badge name",
          "type": "string"
        }
      }
    },
    "schema.GetBadgeListPagedResp": {
      "type": "object",
      "properties": {
        "award_count": {
          "description": "badge award count",
          "type": "integer"
        },
        "description": {
          "description": "badge description",
          "type": "string"
        },
        "earned": {
          "description": "badge earned count",
          "type": "boolean"
        },
        "group_name": {
          "description": "badge group name",
          "type": "string"
        },
        "icon": {
          "description": "badge icon",
          "type": "string"
        },
        "id": {
          "description": "badge id",
          "type": "string"
        },
        "level": {
          "description": "badge level",
          "allOf": [
            {
              "$ref": "#/definitions/entity.BadgeLevel"
            }
          ]
        },
        "name": {
          "description": "badge name",
          "type": "string"
        },
        "status": {
          "description": "badge status",
          "allOf": [
            {
              "$ref": "#/definitions/schema.BadgeStatus"
            }
          ]
        }
      }
    },
    "schema.GetBadgeListResp": {
      "type": "object",
      "properties": {
        "badges": {
          "description": "badge list info",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.BadgeListInfo"
          }
        },
        "group_name": {
          "description": "badge group name",
          "type": "string"
        }
      }
    },
    "schema.GetCommentPersonalWithPageResp": {
      "type": "object",
      "properties": {
        "answer_id": {
          "description": "answer id",
          "type": "string"
        },
        "comment_id": {
          "description": "comment id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        },
        "object_type": {
          "description": "object type",
          "type": "string",
          "enum": [
            "question",
            "answer",
            "tag",
            "comment"
          ]
        },
        "question_id": {
          "description": "question id",
          "type": "string"
        },
        "title": {
          "description": "title",
          "type": "string"
        },
        "url_title": {
          "description": "url title",
          "type": "string"
        }
      }
    },
    "schema.GetCommentResp": {
      "type": "object",
      "properties": {
        "comment_id": {
          "description": "comment id",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "is_vote": {
          "description": "current user if already vote this comment",
          "type": "boolean"
        },
        "member_actions": {
          "description": "MemberActions",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        },
        "original_text": {
          "description": "original comment content",
          "type": "string"
        },
        "parsed_text": {
          "description": "parsed comment content",
          "type": "string"
        },
        "reply_comment_id": {
          "description": "reply comment id",
          "type": "string"
        },
        "reply_user_display_name": {
          "description": "reply user display name",
          "type": "string"
        },
        "reply_user_id": {
          "description": "reply user id",
          "type": "string"
        },
        "reply_user_status": {
          "description": "reply user status",
          "type": "string"
        },
        "reply_username": {
          "description": "reply user username",
          "type": "string"
        },
        "user_avatar": {
          "description": "user avatar",
          "type": "string"
        },
        "user_display_name": {
          "description": "user display name",
          "type": "string"
        },
        "user_id": {
          "description": "user id",
          "type": "string"
        },
        "user_status": {
          "description": "user status",
          "type": "string"
        },
        "username": {
          "description": "username",
          "type": "string"
        },
        "vote_count": {
          "description": "user vote amount",
          "type": "integer"
        }
      }
    },
    "schema.GetCurrentLoginUserInfoResp": {
      "type": "object",
      "properties": {
        "access_token": {
          "description": "access token",
          "type": "string"
        },
        "answer_count": {
          "description": "answer count",
          "type": "integer"
        },
        "authority_group": {
          "description": "authority group",
          "type": "integer"
        },
        "avatar": {
          "$ref": "#/definitions/schema.AvatarInfo"
        },
        "bio": {
          "description": "bio markdown",
          "type": "string"
        },
        "bio_html": {
          "description": "bio html",
          "type": "string"
        },
        "color_scheme": {
          "description": "Color scheme",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "e_mail": {
          "description": "email",
          "type": "string"
        },
        "follow_count": {
          "description": "follow count",
          "type": "integer"
        },
        "have_password": {
          "description": "user have password",
          "type": "boolean"
        },
        "id": {
          "description": "user id",
          "type": "string"
        },
        "language": {
          "description": "language",
          "type": "string"
        },
        "last_login_date": {
          "description": "last login date",
          "type": "integer"
        },
        "location": {
          "description": "location",
          "type": "string"
        },
        "mail_status": {
          "description": "mail status(1 pass 2 to be verified)",
          "type": "integer"
        },
        "mobile": {
          "description": "mobile",
          "type": "string"
        },
        "notice_status": {
          "description": "notice status(1 on 2off)",
          "type": "integer"
        },
        "question_count": {
          "description": "question count",
          "type": "integer"
        },
        "rank": {
          "description": "rank",
          "type": "integer"
        },
        "role_id": {
          "description": "role id",
          "type": "integer"
        },
        "status": {
          "description": "user status",
          "type": "string"
        },
        "suspended_until": {
          "description": "suspended until timestamp",
          "type": "integer"
        },
        "username": {
          "description": "username",
          "type": "string"
        },
        "visit_token": {
          "description": "visit token",
          "type": "string"
        },
        "website": {
          "description": "website",
          "type": "string"
        }
      }
    },
    "schema.GetFollowingTagsResp": {
      "type": "object",
      "properties": {
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "main_tag_slug_name": {
          "description": "if main tag slug name is not empty, this tag is synonymous with the main tag",
          "type": "string"
        },
        "recommend": {
          "type": "boolean"
        },
        "reserved": {
          "type": "boolean"
        },
        "slug_name": {
          "description": "slug name",
          "type": "string"
        },
        "tag_id": {
          "description": "tag id",
          "type": "string"
        }
      }
    },
    "schema.GetObjectTimelineResp": {
      "type": "object",
      "properties": {
        "object_info": {
          "$ref": "#/definitions/schema.ActObjectInfo"
        },
        "timeline": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.ActObjectTimeline"
          }
        }
      }
    },
    "schema.GetOtherUserInfoByUsernameResp": {
      "type": "object",
      "properties": {
        "answer_count": {
          "description": "answer count",
          "type": "integer"
        },
        "avatar": {
          "description": "avatar",
          "type": "string"
        },
        "bio": {
          "description": "bio markdown",
          "type": "string"
        },
        "bio_html": {
          "description": "bio html",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "follow_count": {
          "description": "email\nfollow count",
          "type": "integer"
        },
        "id": {
          "description": "user id",
          "type": "string"
        },
        "last_login_date": {
          "description": "last login date",
          "type": "integer"
        },
        "location": {
          "description": "location",
          "type": "string"
        },
        "mobile": {
          "description": "mobile",
          "type": "string"
        },
        "question_count": {
          "description": "question count",
          "type": "integer"
        },
        "rank": {
          "description": "rank",
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "status_msg": {
          "type": "string"
        },
        "suspended_until": {
          "description": "suspended until timestamp",
          "type": "integer"
        },
        "username": {
          "description": "username",
          "type": "string"
        },
        "website": {
          "description": "website",
          "type": "string"
        }
      }
    },
    "schema.GetOtherUserInfoResp": {
      "type": "object",
      "properties": {
        "info": {
          "$ref": "#/definitions/schema.GetOtherUserInfoByUsernameResp"
        }
      }
    },
    "schema.GetPluginConfigResp": {
      "type": "object",
      "properties": {
        "config_fields": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.ConfigField"
          }
        },
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "schema.GetPluginListResp": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "have_config": {
          "type": "boolean"
        },
        "link": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug_name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "schema.GetPrivilegesConfigResp": {
      "type": "object",
      "properties": {
        "options": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PrivilegeOption"
          }
        },
        "selected_level": {
          "$ref": "#/definitions/schema.PrivilegeLevel"
        }
      }
    },
    "schema.GetRankPersonalPageResp": {
      "type": "object",
      "properties": {
        "answer_id": {
          "description": "answer id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        },
        "object_type": {
          "description": "object type",
          "type": "string",
          "enum": [
            "question",
            "answer",
            "tag",
            "comment"
          ]
        },
        "question_id": {
          "description": "question id",
          "type": "string"
        },
        "rank_type": {
          "description": "rank type",
          "type": "string"
        },
        "reputation": {
          "description": "reputation",
          "type": "integer"
        },
        "title": {
          "description": "title",
          "type": "string"
        },
        "url_title": {
          "description": "url title",
          "type": "string"
        }
      }
    },
    "schema.GetReportListPageResp": {
      "type": "object",
      "properties": {
        "answer_accepted": {
          "type": "boolean"
        },
        "answer_count": {
          "type": "integer"
        },
        "answer_id": {
          "type": "string"
        },
        "author_user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "comment_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "flag_id": {
          "type": "string"
        },
        "object_id": {
          "type": "string"
        },
        "object_show_status": {
          "type": "integer"
        },
        "object_status": {
          "type": "integer"
        },
        "object_type": {
          "type": "string",
          "enum": [
            "question",
            "answer",
            "comment"
          ]
        },
        "original_text": {
          "type": "string"
        },
        "parsed_text": {
          "type": "string"
        },
        "question_id": {
          "type": "string"
        },
        "reason": {
          "$ref": "#/definitions/schema.ReasonItem"
        },
        "reason_content": {
          "type": "string"
        },
        "submit_at": {
          "type": "integer"
        },
        "submitter_user": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        }
      }
    },
    "schema.GetReviewingTypeResp": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "todo_amount": {
          "type": "integer"
        }
      }
    },
    "schema.GetRevisionResp": {
      "type": "object",
      "properties": {
        "content": {},
        "create_at": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "object_id": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "status": {
          "type": "integer"
        },
        "title": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        },
        "use_id": {
          "type": "string"
        },
        "user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        }
      }
    },
    "schema.GetRoleResp": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "schema.GetSMTPConfigResp": {
      "type": "object",
      "properties": {
        "encryption": {
          "description": "\"\" SSL TLS",
          "type": "string"
        },
        "from_email": {
          "type": "string"
        },
        "from_name": {
          "type": "string"
        },
        "smtp_authentication": {
          "type": "boolean"
        },
        "smtp_host": {
          "type": "string"
        },
        "smtp_password": {
          "type": "string"
        },
        "smtp_port": {
          "type": "integer"
        },
        "smtp_username": {
          "type": "string"
        }
      }
    },
    "schema.GetSiteLegalInfoResp": {
      "type": "object",
      "properties": {
        "privacy_policy_original_text": {
          "type": "string"
        },
        "privacy_policy_parsed_text": {
          "type": "string"
        },
        "terms_of_service_original_text": {
          "type": "string"
        },
        "terms_of_service_parsed_text": {
          "type": "string"
        }
      }
    },
    "schema.GetTagBasicResp": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string"
        },
        "recommend": {
          "type": "boolean"
        },
        "reserved": {
          "type": "boolean"
        },
        "slug_name": {
          "type": "string"
        },
        "tag_id": {
          "type": "string"
        }
      }
    },
    "schema.GetTagPageResp": {
      "type": "object",
      "properties": {
        "created_at": {
          "description": "created time",
          "type": "integer"
        },
        "description": {
          "description": "description",
          "type": "string"
        },
        "display_name": {
          "description": "display_name",
          "type": "string"
        },
        "excerpt": {
          "description": "excerpt",
          "type": "string"
        },
        "follow_count": {
          "description": "follower amount",
          "type": "integer"
        },
        "is_follower": {
          "description": "is follower",
          "type": "boolean"
        },
        "original_text": {
          "description": "original text",
          "type": "string"
        },
        "parsed_text": {
          "description": "parsed_text",
          "type": "string"
        },
        "question_count": {
          "description": "question amount",
          "type": "integer"
        },
        "recommend": {
          "type": "boolean"
        },
        "reserved": {
          "type": "boolean"
        },
        "slug_name": {
          "description": "slug_name",
          "type": "string"
        },
        "tag_id": {
          "description": "tag_id",
          "type": "string"
        },
        "updated_at": {
          "description": "updated time",
          "type": "integer"
        }
      }
    },
    "schema.GetTagResp": {
      "type": "object",
      "properties": {
        "created_at": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "excerpt": {
          "type": "string"
        },
        "follow_count": {
          "type": "integer"
        },
        "is_follower": {
          "type": "boolean"
        },
        "main_tag_slug_name": {
          "description": "if main tag slug name is not empty, this tag is synonymous with the main tag",
          "type": "string"
        },
        "member_actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "original_text": {
          "type": "string"
        },
        "parsed_text": {
          "type": "string"
        },
        "question_count": {
          "type": "integer"
        },
        "recommend": {
          "type": "boolean"
        },
        "reserved": {
          "type": "boolean"
        },
        "slug_name": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tag_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "integer"
        }
      }
    },
    "schema.GetTagSynonymsResp": {
      "type": "object",
      "properties": {
        "member_actions": {
          "description": "MemberActions",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "synonyms": {
          "description": "synonyms",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagSynonym"
          }
        }
      }
    },
    "schema.GetUnreviewedPostPageResp": {
      "type": "object",
      "properties": {
        "answer_id": {
          "type": "string"
        },
        "author_user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "comment_id": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "object_id": {
          "type": "string"
        },
        "object_show_status": {
          "type": "integer"
        },
        "object_status": {
          "type": "integer"
        },
        "object_type": {
          "type": "string",
          "enum": [
            "question",
            "answer",
            "comment"
          ]
        },
        "original_text": {
          "type": "string"
        },
        "parsed_text": {
          "type": "string"
        },
        "question_id": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "review_id": {
          "type": "integer"
        },
        "submit_at": {
          "type": "integer"
        },
        "submitter_display_name": {
          "type": "string"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        }
      }
    },
    "schema.GetUnreviewedRevisionResp": {
      "type": "object",
      "properties": {
        "info": {
          "$ref": "#/definitions/schema.UnreviewedRevisionInfoInfo"
        },
        "type": {
          "type": "string"
        },
        "unreviewed_info": {
          "$ref": "#/definitions/schema.GetRevisionResp"
        }
      }
    },
    "schema.GetUserActivationResp": {
      "type": "object",
      "properties": {
        "activation_url": {
          "type": "string"
        }
      }
    },
    "schema.GetUserBadgeAwardListResp": {
      "type": "object",
      "properties": {
        "earned_count": {
          "description": "badge award count",
          "type": "integer"
        },
        "icon": {
          "description": "badge icon",
          "type": "string"
        },
        "id": {
          "description": "badge id",
          "type": "string"
        },
        "level": {
          "description": "badge level",
          "allOf": [
            {
              "$ref": "#/definitions/entity.BadgeLevel"
            }
          ]
        },
        "name": {
          "description": "badge name",
          "type": "string"
        }
      }
    },
    "schema.GetUserNotificationConfigResp": {
      "type": "object",
      "properties": {
        "all_new_question": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        },
        "all_new_question_for_following_tags": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        },
        "inbox": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        }
      }
    },
    "schema.GetUserPageResp": {
      "type": "object",
      "properties": {
        "avatar": {
          "description": "avatar",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "deleted_at": {
          "description": "delete time",
          "type": "integer"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "e_mail": {
          "description": "email",
          "type": "string"
        },
        "rank": {
          "description": "rank",
          "type": "integer"
        },
        "role_id": {
          "description": "role id",
          "type": "integer"
        },
        "role_name": {
          "description": "role name",
          "type": "string"
        },
        "status": {
          "description": "user status(normal,suspended,deleted,inactive)",
          "type": "string"
        },
        "suspended_at": {
          "description": "suspended time",
          "type": "integer"
        },
        "suspended_until": {
          "description": "suspended until time",
          "type": "integer"
        },
        "user_id": {
          "description": "user id",
          "type": "string"
        },
        "username": {
          "description": "username",
          "type": "string"
        }
      }
    },
    "schema.GetUserPluginListResp": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "slug_name": {
          "type": "string"
        }
      }
    },
    "schema.GetUserStaffResp": {
      "type": "object",
      "properties": {
        "avatar": {
          "description": "avatar",
          "type": "string"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "username": {
          "description": "username",
          "type": "string"
        }
      }
    },
    "schema.GetVoteWithPageResp": {
      "type": "object",
      "properties": {
        "answer_id": {
          "description": "answer id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "object_id": {
          "description": "object id",
          "type": "string"
        },
        "object_type": {
          "description": "object type",
          "type": "string",
          "enum": [
            "question",
            "answer",
            "tag",
            "comment"
          ]
        },
        "question_id": {
          "description": "question id",
          "type": "string"
        },
        "title": {
          "description": "title",
          "type": "string"
        },
        "url_title": {
          "description": "url title",
          "type": "string"
        },
        "vote_type": {
          "description": "vote type",
          "type": "string"
        }
      }
    },
    "schema.LoadingAction": {
      "type": "object",
      "properties": {
        "state": {
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "schema.NotificationChannelConfig": {
      "type": "object",
      "properties": {
        "enable": {
          "type": "boolean"
        },
        "key": {
          "$ref": "#/definitions/constant.NotificationChannelKey"
        }
      }
    },
    "schema.NotificationClearIDRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "schema.NotificationClearRequest": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "inbox",
            "achievement"
          ]
        }
      }
    },
    "schema.OnCompleteAction": {
      "type": "object",
      "properties": {
        "refresh_form_config": {
          "type": "boolean"
        },
        "toast_return_message": {
          "type": "boolean"
        }
      }
    },
    "schema.Operation": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "level": {
          "$ref": "#/definitions/schema.OperationLevel"
        },
        "msg": {
          "type": "string"
        },
        "time": {
          "type": "integer"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "schema.OperationLevel": {
      "type": "string",
      "enum": [
        "info",
        "danger",
        "warning",
        "secondary"
      ],
      "x-enum-varnames": [
        "OperationLevelInfo",
        "OperationLevelDanger",
        "OperationLevelWarning",
        "OperationLevelSecondary"
      ]
    },
    "schema.OperationQuestionReq": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "operation": {
          "description": "operation [pin unpin hide show]",
          "type": "string"
        }
      }
    },
    "schema.PermissionMemberAction": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "schema.PostRenderReq": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string"
        }
      }
    },
    "schema.PrivilegeLevel": {
      "type": "integer",
      "enum": [
        1,
        2,
        3,
        99
      ],
      "x-enum-varnames": [
        "PrivilegeLevel1",
        "PrivilegeLevel2",
        "PrivilegeLevel3",
        "PrivilegeLevelCustom"
      ]
    },
    "schema.PrivilegeOption": {
      "type": "object",
      "properties": {
        "level": {
          "$ref": "#/definitions/schema.PrivilegeLevel"
        },
        "level_desc": {
          "type": "string"
        },
        "privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/constant.Privilege"
          }
        }
      }
    },
    "schema.QuestionAdd": {
      "type": "object",
      "required": [
        "title"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string",
          "maxLength": 65535,
          "minLength": 0
        },
        "tags": {
          "description": "tags",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagItem"
          }
        },
        "title": {
          "description": "question title",
          "type": "string",
          "maxLength": 150,
          "minLength": 6
        }
      }
    },
    "schema.QuestionAddByAnswer": {
      "type": "object",
      "required": [
        "answer_content",
        "title"
      ],
      "properties": {
        "answer_content": {
          "type": "string",
          "maxLength": 65535,
          "minLength": 6
        },
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string",
          "maxLength": 65535,
          "minLength": 0
        },
        "mention_username_list": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tags": {
          "description": "tags",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagItem"
          }
        },
        "title": {
          "description": "question title",
          "type": "string",
          "maxLength": 150,
          "minLength": 6
        }
      }
    },
    "schema.QuestionInfoResp": {
      "type": "object",
      "properties": {
        "accepted_answer_id": {
          "type": "string"
        },
        "answer_count": {
          "type": "integer"
        },
        "answered": {
          "type": "boolean"
        },
        "collected": {
          "type": "boolean"
        },
        "collection_count": {
          "type": "integer"
        },
        "content": {
          "type": "string"
        },
        "create_time": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "edit_time": {
          "type": "integer"
        },
        "extends_actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "first_answer_id": {
          "type": "string"
        },
        "follow_count": {
          "type": "integer"
        },
        "html": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "is_followed": {
          "type": "boolean"
        },
        "last_answer_id": {
          "type": "string"
        },
        "last_answered_user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "member_actions": {
          "description": "MemberActions",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.PermissionMemberAction"
          }
        },
        "operation": {
          "$ref": "#/definitions/schema.Operation"
        },
        "pin": {
          "type": "integer"
        },
        "show": {
          "type": "integer"
        },
        "status": {
          "type": "integer"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "unique_view_count": {
          "type": "integer"
        },
        "update_time": {
          "type": "integer"
        },
        "update_user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "url_title": {
          "type": "string"
        },
        "user_info": {
          "$ref": "#/definitions/schema.UserBasicInfo"
        },
        "view_count": {
          "type": "integer"
        },
        "vote_count": {
          "type": "integer"
        },
        "vote_status": {
          "type": "string"
        }
      }
    },
    "schema.QuestionPageReq": {
      "type": "object",
      "properties": {
        "in_days": {
          "type": "integer",
          "minimum": 1
        },
        "order": {
          "type": "string",
          "enum": [
            "newest",
            "active",
            "hot",
            "score",
            "unanswered",
            "recommend",
            "frequent"
          ]
        },
        "page": {
          "type": "integer",
          "minimum": 1
        },
        "page_size": {
          "type": "integer",
          "minimum": 1
        },
        "tag": {
          "type": "string",
          "maxLength": 100
        },
        "username": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.QuestionPageResp": {
      "type": "object",
      "properties": {
        "accepted_answer_id": {
          "description": "answer information",
          "type": "string"
        },
        "answer_count": {
          "type": "integer"
        },
        "collection_count": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "follow_count": {
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "last_answer_id": {
          "type": "string"
        },
        "operated_at": {
          "description": "operator information",
          "type": "integer"
        },
        "operation_type": {
          "type": "string"
        },
        "operator": {
          "$ref": "#/definitions/schema.QuestionPageRespOperator"
        },
        "pin": {
          "description": "1: unpin, 2: pin",
          "type": "integer"
        },
        "show": {
          "description": "0: show, 1: hide",
          "type": "integer"
        },
        "status": {
          "type": "integer"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "unique_view_count": {
          "type": "integer"
        },
        "url_title": {
          "type": "string"
        },
        "view_count": {
          "description": "question statistical information",
          "type": "integer"
        },
        "vote_count": {
          "type": "integer"
        }
      }
    },
    "schema.QuestionPageRespOperator": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "rank": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "schema.QuestionRecoverReq": {
      "type": "object",
      "required": [
        "question_id"
      ],
      "properties": {
        "question_id": {
          "type": "string"
        }
      }
    },
    "schema.QuestionUpdate": {
      "type": "object",
      "required": [
        "id",
        "title"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "content": {
          "description": "content",
          "type": "string",
          "maxLength": 65535,
          "minLength": 0
        },
        "edit_summary": {
          "description": "edit summary",
          "type": "string"
        },
        "id": {
          "description": "question id",
          "type": "string"
        },
        "invite_user": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tags": {
          "description": "tags",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagItem"
          }
        },
        "title": {
          "description": "question title",
          "type": "string",
          "maxLength": 150,
          "minLength": 6
        }
      }
    },
    "schema.QuestionUpdateInviteUser": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "invite_user": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "schema.ReactionRespItem": {
      "type": "object",
      "properties": {
        "count": {
          "description": "Count is the number of users who reacted",
          "type": "integer"
        },
        "emoji": {
          "description": "Emoji is the reaction emoji",
          "type": "string"
        },
        "is_active": {
          "description": "IsActive is if current user has reacted",
          "type": "boolean"
        },
        "tooltip": {
          "description": "Tooltip is the user's name who reacted",
          "type": "string"
        }
      }
    },
    "schema.ReasonItem": {
      "type": "object",
      "properties": {
        "content_type": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "placeholder": {
          "type": "string"
        },
        "reason_key": {
          "type": "string"
        },
        "reason_type": {
          "type": "integer"
        }
      }
    },
    "schema.RecoverAnswerReq": {
      "type": "object",
      "required": [
        "answer_id"
      ],
      "properties": {
        "answer_id": {
          "type": "string"
        }
      }
    },
    "schema.RecoverTagReq": {
      "type": "object",
      "required": [
        "tag_id"
      ],
      "properties": {
        "tag_id": {
          "type": "string"
        }
      }
    },
    "schema.RemoveAnswerReq": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "schema.RemoveCommentReq": {
      "type": "object",
      "required": [
        "comment_id"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "comment_id": {
          "description": "comment id",
          "type": "string"
        }
      }
    },
    "schema.RemoveQuestionReq": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "captcha_id",
          "type": "string"
        },
        "id": {
          "description": "question id",
          "type": "string"
        }
      }
    },
    "schema.RemoveTagReq": {
      "type": "object",
      "required": [
        "tag_id"
      ],
      "properties": {
        "tag_id": {
          "description": "tag_id",
          "type": "string"
        }
      }
    },
    "schema.ReopenQuestionReq": {
      "type": "object",
      "properties": {
        "question_id": {
          "type": "string"
        }
      }
    },
    "schema.ReviewReportReq": {
      "type": "object",
      "required": [
        "flag_id",
        "operation_type"
      ],
      "properties": {
        "close_msg": {
          "type": "string"
        },
        "close_type": {
          "type": "integer"
        },
        "content": {
          "type": "string",
          "maxLength": 65535,
          "minLength": 6
        },
        "flag_id": {
          "type": "string"
        },
        "operation_type": {
          "type": "string",
          "enum": [
            "edit_post",
            "close_post",
            "delete_post",
            "unlist_post",
            "ignore_report"
          ]
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagItem"
          }
        },
        "title": {
          "type": "string",
          "maxLength": 150,
          "minLength": 6
        }
      }
    },
    "schema.RevisionAuditReq": {
      "type": "object",
      "required": [
        "id",
        "operation"
      ],
      "properties": {
        "id": {
          "description": "object id",
          "type": "string"
        },
        "operation": {
          "description": "approve or reject",
          "type": "string"
        }
      }
    },
    "schema.SearchObject": {
      "type": "object",
      "properties": {
        "accepted": {
          "type": "boolean"
        },
        "answer_count": {
          "type": "integer"
        },
        "created_at": {
          "type": "integer"
        },
        "excerpt": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "question_id": {
          "type": "string"
        },
        "status": {
          "description": "Status",
          "type": "string"
        },
        "tags": {
          "description": "tags",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        },
        "user_info": {
          "description": "user info",
          "allOf": [
            {
              "$ref": "#/definitions/schema.SearchObjectUser"
            }
          ]
        },
        "vote_count": {
          "type": "integer"
        }
      }
    },
    "schema.SearchObjectUser": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "rank": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      }
    },
    "schema.SearchResp": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer"
        },
        "list": {
          "description": "search response",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SearchResult"
          }
        }
      }
    },
    "schema.SearchResult": {
      "type": "object",
      "properties": {
        "object": {
          "description": "this object",
          "allOf": [
            {
              "$ref": "#/definitions/schema.SearchObject"
            }
          ]
        },
        "object_type": {
          "description": "object_type",
          "type": "string"
        }
      }
    },
    "schema.SendUserActivationReq": {
      "type": "object",
      "required": [
        "user_id"
      ],
      "properties": {
        "user_id": {
          "type": "string"
        }
      }
    },
    "schema.SiteAIProvider": {
      "type": "object",
      "properties": {
        "api_host": {
          "type": "string",
          "maxLength": 512
        },
        "api_key": {
          "type": "string",
          "maxLength": 256
        },
        "model": {
          "type": "string",
          "maxLength": 100
        },
        "provider": {
          "type": "string",
          "maxLength": 50
        }
      }
    },
    "schema.SiteAIReq": {
      "type": "object",
      "properties": {
        "ai_providers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteAIProvider"
          }
        },
        "chosen_provider": {
          "type": "string",
          "maxLength": 50
        },
        "enabled": {
          "type": "boolean"
        },
        "prompt_config": {
          "$ref": "#/definitions/schema.AIPromptConfig"
        }
      }
    },
    "schema.SiteAIResp": {
      "type": "object",
      "properties": {
        "ai_providers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteAIProvider"
          }
        },
        "chosen_provider": {
          "type": "string",
          "maxLength": 50
        },
        "enabled": {
          "type": "boolean"
        },
        "prompt_config": {
          "$ref": "#/definitions/schema.AIPromptConfig"
        }
      }
    },
    "schema.SiteAdvancedReq": {
      "type": "object",
      "properties": {
        "authorized_attachment_extensions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "authorized_image_extensions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_attachment_size": {
          "type": "integer"
        },
        "max_image_megapixel": {
          "type": "integer"
        },
        "max_image_size": {
          "type": "integer"
        }
      }
    },
    "schema.SiteAdvancedResp": {
      "type": "object",
      "properties": {
        "authorized_attachment_extensions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "authorized_image_extensions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_attachment_size": {
          "type": "integer"
        },
        "max_image_megapixel": {
          "type": "integer"
        },
        "max_image_size": {
          "type": "integer"
        }
      }
    },
    "schema.SiteBrandingReq": {
      "type": "object",
      "properties": {
        "favicon": {
          "type": "string",
          "maxLength": 512
        },
        "logo": {
          "type": "string",
          "maxLength": 512
        },
        "mobile_logo": {
          "type": "string",
          "maxLength": 512
        },
        "square_icon": {
          "type": "string",
          "maxLength": 512
        }
      }
    },
    "schema.SiteBrandingResp": {
      "type": "object",
      "properties": {
        "favicon": {
          "type": "string",
          "maxLength": 512
        },
        "logo": {
          "type": "string",
          "maxLength": 512
        },
        "mobile_logo": {
          "type": "string",
          "maxLength": 512
        },
        "square_icon": {
          "type": "string",
          "maxLength": 512
        }
      }
    },
    "schema.SiteCustomCssHTMLReq": {
      "type": "object",
      "properties": {
        "custom_css": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_footer": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_head": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_header": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_sidebar": {
          "type": "string",
          "maxLength": 65536
        }
      }
    },
    "schema.SiteCustomCssHTMLResp": {
      "type": "object",
      "properties": {
        "custom_css": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_footer": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_head": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_header": {
          "type": "string",
          "maxLength": 65536
        },
        "custom_sidebar": {
          "type": "string",
          "maxLength": 65536
        }
      }
    },
    "schema.SiteGeneralReq": {
      "type": "object",
      "required": [
        "contact_email",
        "name",
        "site_url"
      ],
      "properties": {
        "contact_email": {
          "type": "string",
          "maxLength": 512
        },
        "description": {
          "type": "string",
          "maxLength": 2000
        },
        "name": {
          "type": "string",
          "maxLength": 128
        },
        "short_description": {
          "type": "string",
          "maxLength": 255
        },
        "site_url": {
          "type": "string",
          "maxLength": 512
        }
      }
    },
    "schema.SiteGeneralResp": {
      "type": "object",
      "required": [
        "contact_email",
        "name",
        "site_url"
      ],
      "properties": {
        "contact_email": {
          "type": "string",
          "maxLength": 512
        },
        "description": {
          "type": "string",
          "maxLength": 2000
        },
        "name": {
          "type": "string",
          "maxLength": 128
        },
        "short_description": {
          "type": "string",
          "maxLength": 255
        },
        "site_url": {
          "type": "string",
          "maxLength": 512
        }
      }
    },
    "schema.SiteInfoResp": {
      "type": "object",
      "properties": {
        "ai_enabled": {
          "type": "boolean"
        },
        "branding": {
          "$ref": "#/definitions/schema.SiteBrandingResp"
        },
        "custom_css_html": {
          "$ref": "#/definitions/schema.SiteCustomCssHTMLResp"
        },
        "general": {
          "$ref": "#/definitions/schema.SiteGeneralResp"
        },
        "interface": {
          "$ref": "#/definitions/schema.SiteInterfaceSettingsResp"
        },
        "login": {
          "$ref": "#/definitions/schema.SiteLoginResp"
        },
        "mcp_enabled": {
          "type": "boolean"
        },
        "revision": {
          "type": "string"
        },
        "site_advanced": {
          "$ref": "#/definitions/schema.SiteAdvancedResp"
        },
        "site_legal": {
          "$ref": "#/definitions/schema.SiteLegalSimpleResp"
        },
        "site_questions": {
          "$ref": "#/definitions/schema.SiteQuestionsResp"
        },
        "site_security": {
          "$ref": "#/definitions/schema.SiteSecurityResp"
        },
        "site_seo": {
          "$ref": "#/definitions/schema.SiteSeoResp"
        },
        "site_tags": {
          "$ref": "#/definitions/schema.SiteTagsResp"
        },
        "site_users": {
          "$ref": "#/definitions/schema.SiteUsersResp"
        },
        "theme": {
          "$ref": "#/definitions/schema.SiteThemeResp"
        },
        "users_settings": {
          "$ref": "#/definitions/schema.SiteUsersSettingsResp"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "schema.SiteInterfaceReq": {
      "type": "object",
      "required": [
        "language",
        "time_zone"
      ],
      "properties": {
        "language": {
          "type": "string",
          "maxLength": 128
        },
        "time_zone": {
          "type": "string",
          "maxLength": 128
        }
      }
    },
    "schema.SiteInterfaceSettingsResp": {
      "type": "object",
      "required": [
        "language",
        "time_zone"
      ],
      "properties": {
        "language": {
          "type": "string",
          "maxLength": 128
        },
        "time_zone": {
          "type": "string",
          "maxLength": 128
        }
      }
    },
    "schema.SiteLegalSimpleResp": {
      "type": "object",
      "required": [
        "external_content_display"
      ],
      "properties": {
        "external_content_display": {
          "type": "string",
          "enum": [
            "always_display",
            "ask_before_display"
          ]
        }
      }
    },
    "schema.SiteLoginReq": {
      "type": "object",
      "required": [
        "require_email_verification"
      ],
      "properties": {
        "allow_email_domains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "allow_email_registrations": {
          "type": "boolean"
        },
        "allow_new_registrations": {
          "type": "boolean"
        },
        "allow_password_login": {
          "type": "boolean"
        },
        "require_email_verification": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteLoginResp": {
      "type": "object",
      "properties": {
        "allow_email_domains": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "allow_email_registrations": {
          "type": "boolean"
        },
        "allow_new_registrations": {
          "type": "boolean"
        },
        "allow_password_login": {
          "type": "boolean"
        },
        "require_email_verification": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteMCPReq": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteMCPResp": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "http_header": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "schema.SitePoliciesReq": {
      "type": "object",
      "properties": {
        "privacy_policy_original_text": {
          "type": "string"
        },
        "privacy_policy_parsed_text": {
          "type": "string"
        },
        "terms_of_service_original_text": {
          "type": "string"
        },
        "terms_of_service_parsed_text": {
          "type": "string"
        }
      }
    },
    "schema.SitePoliciesResp": {
      "type": "object",
      "properties": {
        "privacy_policy_original_text": {
          "type": "string"
        },
        "privacy_policy_parsed_text": {
          "type": "string"
        },
        "terms_of_service_original_text": {
          "type": "string"
        },
        "terms_of_service_parsed_text": {
          "type": "string"
        }
      }
    },
    "schema.SiteQuestionsReq": {
      "type": "object",
      "properties": {
        "min_content": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 0
        },
        "min_tags": {
          "type": "integer",
          "maximum": 5,
          "minimum": 0
        },
        "restrict_answer": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteQuestionsResp": {
      "type": "object",
      "properties": {
        "min_content": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 0
        },
        "min_tags": {
          "type": "integer",
          "maximum": 5,
          "minimum": 0
        },
        "restrict_answer": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteSecurityReq": {
      "type": "object",
      "required": [
        "external_content_display"
      ],
      "properties": {
        "check_update": {
          "type": "boolean"
        },
        "external_content_display": {
          "type": "string",
          "enum": [
            "always_display",
            "ask_before_display"
          ]
        },
        "login_required": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteSecurityResp": {
      "type": "object",
      "required": [
        "external_content_display"
      ],
      "properties": {
        "check_update": {
          "type": "boolean"
        },
        "external_content_display": {
          "type": "string",
          "enum": [
            "always_display",
            "ask_before_display"
          ]
        },
        "login_required": {
          "type": "boolean"
        }
      }
    },
    "schema.SiteSeoReq": {
      "type": "object",
      "required": [
        "permalink",
        "robots"
      ],
      "properties": {
        "permalink": {
          "type": "integer",
          "maximum": 4,
          "minimum": 0
        },
        "robots": {
          "type": "string"
        }
      }
    },
    "schema.SiteSeoResp": {
      "type": "object",
      "required": [
        "permalink",
        "robots"
      ],
      "properties": {
        "permalink": {
          "type": "integer",
          "maximum": 4,
          "minimum": 0
        },
        "robots": {
          "type": "string"
        }
      }
    },
    "schema.SiteTagsReq": {
      "type": "object",
      "properties": {
        "recommend_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteWriteTag"
          }
        },
        "required_tag": {
          "type": "boolean"
        },
        "reserved_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteWriteTag"
          }
        }
      }
    },
    "schema.SiteTagsResp": {
      "type": "object",
      "properties": {
        "recommend_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteWriteTag"
          }
        },
        "required_tag": {
          "type": "boolean"
        },
        "reserved_tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.SiteWriteTag"
          }
        }
      }
    },
    "schema.SiteThemeReq": {
      "type": "object",
      "required": [
        "theme"
      ],
      "properties": {
        "color_scheme": {
          "type": "string",
          "maxLength": 100
        },
        "layout": {
          "type": "string",
          "enum": [
            "Full-width",
            "Fixed-width"
          ]
        },
        "theme": {
          "type": "string",
          "maxLength": 255
        },
        "theme_config": {
          "type": "object",
          "additionalProperties": {}
        }
      }
    },
    "schema.SiteThemeResp": {
      "type": "object",
      "properties": {
        "color_scheme": {
          "type": "string"
        },
        "layout": {
          "type": "string"
        },
        "theme": {
          "type": "string"
        },
        "theme_config": {
          "type": "object",
          "additionalProperties": {}
        },
        "theme_options": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.ThemeOption"
          }
        }
      }
    },
    "schema.SiteUsersReq": {
      "type": "object",
      "required": [
        "default_avatar"
      ],
      "properties": {
        "allow_update_avatar": {
          "type": "boolean"
        },
        "allow_update_bio": {
          "type": "boolean"
        },
        "allow_update_display_name": {
          "type": "boolean"
        },
        "allow_update_location": {
          "type": "boolean"
        },
        "allow_update_username": {
          "type": "boolean"
        },
        "allow_update_website": {
          "type": "boolean"
        },
        "default_avatar": {
          "type": "string",
          "enum": [
            "system",
            "gravatar"
          ]
        },
        "gravatar_base_url": {
          "type": "string"
        }
      }
    },
    "schema.SiteUsersResp": {
      "type": "object",
      "required": [
        "default_avatar"
      ],
      "properties": {
        "allow_update_avatar": {
          "type": "boolean"
        },
        "allow_update_bio": {
          "type": "boolean"
        },
        "allow_update_display_name": {
          "type": "boolean"
        },
        "allow_update_location": {
          "type": "boolean"
        },
        "allow_update_username": {
          "type": "boolean"
        },
        "allow_update_website": {
          "type": "boolean"
        },
        "default_avatar": {
          "type": "string",
          "enum": [
            "system",
            "gravatar"
          ]
        },
        "gravatar_base_url": {
          "type": "string"
        }
      }
    },
    "schema.SiteUsersSettingsReq": {
      "type": "object",
      "required": [
        "default_avatar"
      ],
      "properties": {
        "default_avatar": {
          "type": "string",
          "enum": [
            "system",
            "gravatar"
          ]
        },
        "gravatar_base_url": {
          "type": "string"
        }
      }
    },
    "schema.SiteUsersSettingsResp": {
      "type": "object",
      "required": [
        "default_avatar"
      ],
      "properties": {
        "default_avatar": {
          "type": "string",
          "enum": [
            "system",
            "gravatar"
          ]
        },
        "gravatar_base_url": {
          "type": "string"
        }
      }
    },
    "schema.SiteWriteTag": {
      "type": "object",
      "required": [
        "slug_name"
      ],
      "properties": {
        "display_name": {
          "type": "string"
        },
        "slug_name": {
          "type": "string"
        }
      }
    },
    "schema.TagItem": {
      "type": "object",
      "properties": {
        "display_name": {
          "description": "display_name",
          "type": "string",
          "maxLength": 35
        },
        "original_text": {
          "description": "original text",
          "type": "string"
        },
        "slug_name": {
          "description": "slug_name",
          "type": "string",
          "maxLength": 35
        }
      }
    },
    "schema.TagResp": {
      "type": "object",
      "properties": {
        "display_name": {
          "type": "string"
        },
        "main_tag_slug_name": {
          "description": "if main tag slug name is not empty, this tag is synonymous with the main tag",
          "type": "string"
        },
        "recommend": {
          "type": "boolean"
        },
        "reserved": {
          "type": "boolean"
        },
        "slug_name": {
          "type": "string"
        }
      }
    },
    "schema.TagSynonym": {
      "type": "object",
      "properties": {
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "main_tag_slug_name": {
          "description": "if main tag slug name is not empty, this tag is synonymous with the main tag",
          "type": "string"
        },
        "slug_name": {
          "description": "slug name",
          "type": "string"
        },
        "tag_id": {
          "description": "tag id",
          "type": "string"
        }
      }
    },
    "schema.ThemeOption": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "schema.UIOptionAction": {
      "type": "object",
      "properties": {
        "loading": {
          "$ref": "#/definitions/schema.LoadingAction"
        },
        "method": {
          "type": "string"
        },
        "on_complete": {
          "$ref": "#/definitions/schema.OnCompleteAction"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "schema.UnreviewedRevisionInfoInfo": {
      "type": "object",
      "properties": {
        "answer_accepted": {
          "type": "boolean"
        },
        "answer_count": {
          "type": "integer"
        },
        "answer_id": {
          "type": "string"
        },
        "comment_id": {
          "type": "string"
        },
        "content": {
          "type": "string"
        },
        "created_at": {
          "type": "integer"
        },
        "html": {
          "type": "string"
        },
        "object_creator_user_id": {
          "type": "string"
        },
        "object_id": {
          "type": "string"
        },
        "object_type": {
          "type": "string"
        },
        "question_id": {
          "type": "string"
        },
        "show_status": {
          "type": "integer"
        },
        "status": {
          "type": "integer"
        },
        "tags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagResp"
          }
        },
        "title": {
          "type": "string"
        },
        "url_title": {
          "type": "string"
        }
      }
    },
    "schema.UpdateAPIKeyReq": {
      "type": "object",
      "required": [
        "description",
        "id"
      ],
      "properties": {
        "description": {
          "type": "string",
          "maxLength": 150
        },
        "id": {
          "type": "integer"
        }
      }
    },
    "schema.UpdateBadgeStatusReq": {
      "type": "object",
      "required": [
        "id",
        "status"
      ],
      "properties": {
        "id": {
          "description": "badge id",
          "type": "string"
        },
        "status": {
          "description": "badge status",
          "allOf": [
            {
              "$ref": "#/definitions/schema.BadgeStatus"
            }
          ]
        }
      }
    },
    "schema.UpdateCommentReq": {
      "type": "object",
      "required": [
        "comment_id",
        "original_text"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "description": "whether user can delete it",
          "type": "string"
        },
        "comment_id": {
          "description": "comment id",
          "type": "string"
        },
        "original_text": {
          "description": "original comment content",
          "type": "string",
          "maxLength": 600,
          "minLength": 2
        }
      }
    },
    "schema.UpdateFollowTagsReq": {
      "type": "object",
      "properties": {
        "slug_name_list": {
          "description": "tag slug name list",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "schema.UpdateInfoRequest": {
      "type": "object",
      "properties": {
        "avatar": {
          "$ref": "#/definitions/schema.AvatarInfo"
        },
        "bio": {
          "type": "string",
          "maxLength": 4096
        },
        "display_name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "location": {
          "type": "string",
          "maxLength": 100
        },
        "username": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "website": {
          "type": "string",
          "maxLength": 500
        }
      }
    },
    "schema.UpdatePluginConfigReq": {
      "type": "object",
      "required": [
        "plugin_slug_name"
      ],
      "properties": {
        "config_fields": {
          "type": "object",
          "additionalProperties": {}
        },
        "plugin_slug_name": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.UpdatePluginStatusReq": {
      "type": "object",
      "required": [
        "plugin_slug_name"
      ],
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "plugin_slug_name": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.UpdatePrivilegesConfigReq": {
      "type": "object",
      "required": [
        "level"
      ],
      "properties": {
        "custom_privileges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/constant.Privilege"
          }
        },
        "level": {
          "minimum": 1,
          "allOf": [
            {
              "$ref": "#/definitions/schema.PrivilegeLevel"
            }
          ]
        }
      }
    },
    "schema.UpdateReactionReq": {
      "type": "object",
      "required": [
        "emoji",
        "object_id",
        "reaction"
      ],
      "properties": {
        "emoji": {
          "type": "string",
          "enum": [
            "heart",
            "smile",
            "frown"
          ]
        },
        "object_id": {
          "type": "string"
        },
        "reaction": {
          "type": "string",
          "enum": [
            "activate",
            "deactivate"
          ]
        }
      }
    },
    "schema.UpdateReviewReq": {
      "type": "object",
      "required": [
        "review_id",
        "status"
      ],
      "properties": {
        "review_id": {
          "type": "integer"
        },
        "status": {
          "type": "string",
          "enum": [
            "approve",
            "reject"
          ]
        }
      }
    },
    "schema.UpdateSMTPConfigReq": {
      "type": "object",
      "properties": {
        "encryption": {
          "description": "\"\" SSL TLS",
          "type": "string",
          "enum": [
            "SSL",
            "TLS"
          ]
        },
        "from_email": {
          "type": "string",
          "maxLength": 256
        },
        "from_name": {
          "type": "string",
          "maxLength": 256
        },
        "smtp_authentication": {
          "type": "boolean"
        },
        "smtp_host": {
          "type": "string",
          "maxLength": 256
        },
        "smtp_password": {
          "type": "string",
          "maxLength": 256
        },
        "smtp_port": {
          "type": "integer",
          "maximum": 65535,
          "minimum": 1
        },
        "smtp_username": {
          "type": "string",
          "maxLength": 256
        },
        "test_email_recipient": {
          "type": "string"
        }
      }
    },
    "schema.UpdateTagReq": {
      "type": "object",
      "required": [
        "tag_id"
      ],
      "properties": {
        "display_name": {
          "description": "display_name",
          "type": "string",
          "maxLength": 35
        },
        "edit_summary": {
          "description": "edit summary",
          "type": "string"
        },
        "original_text": {
          "description": "original text",
          "type": "string"
        },
        "slug_name": {
          "description": "slug_name",
          "type": "string",
          "maxLength": 35
        },
        "tag_id": {
          "description": "tag_id",
          "type": "string"
        }
      }
    },
    "schema.UpdateTagSynonymReq": {
      "type": "object",
      "required": [
        "synonym_tag_list",
        "tag_id"
      ],
      "properties": {
        "synonym_tag_list": {
          "description": "synonym tag list",
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.TagItem"
          }
        },
        "tag_id": {
          "description": "tag_id",
          "type": "string"
        }
      }
    },
    "schema.UpdateUserInterfaceRequest": {
      "type": "object",
      "required": [
        "color_scheme",
        "language"
      ],
      "properties": {
        "color_scheme": {
          "description": "Color scheme",
          "type": "string",
          "maxLength": 100
        },
        "language": {
          "description": "language",
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.UpdateUserNotificationConfigReq": {
      "type": "object",
      "properties": {
        "all_new_question": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        },
        "all_new_question_for_following_tags": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        },
        "inbox": {
          "$ref": "#/definitions/schema.NotificationChannelConfig"
        }
      }
    },
    "schema.UpdateUserPasswordReq": {
      "type": "object",
      "required": [
        "password",
        "user_id"
      ],
      "properties": {
        "password": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        },
        "user_id": {
          "type": "string"
        }
      }
    },
    "schema.UpdateUserPluginConfigReq": {
      "type": "object",
      "required": [
        "plugin_slug_name"
      ],
      "properties": {
        "config_fields": {
          "type": "object",
          "additionalProperties": {}
        },
        "plugin_slug_name": {
          "type": "string",
          "maxLength": 100
        }
      }
    },
    "schema.UpdateUserRoleReq": {
      "type": "object",
      "required": [
        "role_id",
        "user_id"
      ],
      "properties": {
        "role_id": {
          "description": "role id",
          "type": "integer"
        },
        "user_id": {
          "description": "user id",
          "type": "string"
        }
      }
    },
    "schema.UpdateUserStatusReq": {
      "type": "object",
      "required": [
        "status",
        "user_id"
      ],
      "properties": {
        "remove_all_content": {
          "type": "boolean"
        },
        "status": {
          "type": "string",
          "enum": [
            "normal",
            "suspended",
            "deleted",
            "inactive"
          ]
        },
        "suspend_duration": {
          "type": "string",
          "enum": [
            "24h",
            "48h",
            "72h",
            "7d",
            "14d",
            "1m",
            "2m",
            "3m",
            "6m",
            "1y",
            "forever"
          ]
        },
        "user_id": {
          "type": "string"
        }
      }
    },
    "schema.UserBasicInfo": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string"
        },
        "display_name": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "location": {
          "type": "string"
        },
        "rank": {
          "type": "integer"
        },
        "status": {
          "type": "string"
        },
        "suspended_until": {
          "type": "integer"
        },
        "username": {
          "type": "string"
        },
        "website": {
          "type": "string"
        }
      }
    },
    "schema.UserChangeEmailSendCodeReq": {
      "type": "object",
      "required": [
        "e_mail"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "e_mail": {
          "type": "string",
          "maxLength": 500
        },
        "pass": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        }
      }
    },
    "schema.UserChangeEmailVerifyReq": {
      "type": "object",
      "required": [
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "maxLength": 500
        }
      }
    },
    "schema.UserEmailLoginReq": {
      "type": "object",
      "required": [
        "e_mail",
        "pass"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "e_mail": {
          "type": "string",
          "maxLength": 500
        },
        "pass": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        }
      }
    },
    "schema.UserLoginResp": {
      "type": "object",
      "properties": {
        "access_token": {
          "description": "access token",
          "type": "string"
        },
        "answer_count": {
          "description": "answer count",
          "type": "integer"
        },
        "authority_group": {
          "description": "authority group",
          "type": "integer"
        },
        "avatar": {
          "description": "avatar",
          "type": "string"
        },
        "bio": {
          "description": "bio markdown",
          "type": "string"
        },
        "bio_html": {
          "description": "bio html",
          "type": "string"
        },
        "color_scheme": {
          "description": "Color scheme",
          "type": "string"
        },
        "created_at": {
          "description": "create time",
          "type": "integer"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "e_mail": {
          "description": "email",
          "type": "string"
        },
        "follow_count": {
          "description": "follow count",
          "type": "integer"
        },
        "have_password": {
          "description": "user have password",
          "type": "boolean"
        },
        "id": {
          "description": "user id",
          "type": "string"
        },
        "language": {
          "description": "language",
          "type": "string"
        },
        "last_login_date": {
          "description": "last login date",
          "type": "integer"
        },
        "location": {
          "description": "location",
          "type": "string"
        },
        "mail_status": {
          "description": "mail status(1 pass 2 to be verified)",
          "type": "integer"
        },
        "mobile": {
          "description": "mobile",
          "type": "string"
        },
        "notice_status": {
          "description": "notice status(1 on 2off)",
          "type": "integer"
        },
        "question_count": {
          "description": "question count",
          "type": "integer"
        },
        "rank": {
          "description": "rank",
          "type": "integer"
        },
        "role_id": {
          "description": "role id",
          "type": "integer"
        },
        "status": {
          "description": "user status",
          "type": "string"
        },
        "suspended_until": {
          "description": "suspended until timestamp",
          "type": "integer"
        },
        "username": {
          "description": "username",
          "type": "string"
        },
        "visit_token": {
          "description": "visit token",
          "type": "string"
        },
        "website": {
          "description": "website",
          "type": "string"
        }
      }
    },
    "schema.UserModifyPasswordReq": {
      "type": "object",
      "required": [
        "pass"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "old_pass": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        },
        "pass": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        }
      }
    },
    "schema.UserRankingResp": {
      "type": "object",
      "properties": {
        "staffs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.UserRankingSimpleInfo"
          }
        },
        "users_with_the_most_reputation": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.UserRankingSimpleInfo"
          }
        },
        "users_with_the_most_vote": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/schema.UserRankingSimpleInfo"
          }
        }
      }
    },
    "schema.UserRankingSimpleInfo": {
      "type": "object",
      "properties": {
        "avatar": {
          "description": "avatar",
          "type": "string"
        },
        "display_name": {
          "description": "display name",
          "type": "string"
        },
        "rank": {
          "description": "rank",
          "type": "integer"
        },
        "username": {
          "description": "username",
          "type": "string"
        },
        "vote_count": {
          "description": "vote",
          "type": "integer"
        }
      }
    },
    "schema.UserRePassWordRequest": {
      "type": "object",
      "required": [
        "code",
        "pass"
      ],
      "properties": {
        "code": {
          "type": "string",
          "maxLength": 100
        },
        "pass": {
          "type": "string",
          "maxLength": 32
        }
      }
    },
    "schema.UserRegisterReq": {
      "type": "object",
      "required": [
        "e_mail",
        "name",
        "pass"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "e_mail": {
          "type": "string",
          "maxLength": 500
        },
        "name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 2
        },
        "pass": {
          "type": "string",
          "maxLength": 32,
          "minLength": 8
        }
      }
    },
    "schema.UserRetrievePassWordRequest": {
      "type": "object",
      "required": [
        "e_mail"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "e_mail": {
          "type": "string",
          "maxLength": 500
        }
      }
    },
    "schema.UserUnsubscribeNotificationReq": {
      "type": "object",
      "required": [
        "code"
      ],
      "properties": {
        "code": {
          "type": "string",
          "maxLength": 500
        }
      }
    },
    "schema.VoteReq": {
      "type": "object",
      "required": [
        "object_id"
      ],
      "properties": {
        "captcha_code": {
          "type": "string"
        },
        "captcha_id": {
          "type": "string"
        },
        "is_cancel": {
          "type": "boolean"
        },
        "object_id": {
          "type": "string"
        }
      }
    },
    "schema.VoteResp": {
      "type": "object",
      "properties": {
        "down_votes": {
          "type": "integer"
        },
        "up_votes": {
          "type": "integer"
        },
        "vote_status": {
          "type": "string"
        },
        "votes": {
          "type": "integer"
        }
      }
    },
    "translator.LangOption": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "progress": {
          "description": "Translation completion percentage",
          "type": "integer"
        },
        "value": {
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header"
    }
  }
}