Files
Artur Iusupov 3a5a15fe77 fix(site): require explicit email verification setting
Replace OptionalBool with an explicit require_email_verification value for the login settings save request while keeping legacy read defaults intact.

Use positive RequireEmailVerification naming through the registration flow and inline the site setting mapping.

Add validation, save-path, and registration coverage for the explicit email verification setting.
2026-07-10 10:19:39 +08:00

8558 lines
197 KiB
YAML

# 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 <br> <b>order</b> (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 <br> 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"