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