openapi: 3.0.2
info:
title: ''
version: ''
tags:
- name: 条目
- name: 章节
- name: 角色
- name: 人物
- name: 用户
- name: 收藏
- name: 编辑历史
- name: 目录
paths:
/v0/search/subjects:
post:
tags:
- 条目
summary: 条目搜索
operationId: searchSubjects
description: |
## 实验性 API, 本 schema 和实际的 API 行为都可能随时发生改动
目前支持的筛选条件包括:
- `type`: 条目类型,参照 `SubjectType` enum, `或`。
- `tag`: 标签,可以多次出现。`且` 关系。
- `airdate`: 播出日期/发售日期。`且` 关系。
- `rating`: 用于搜索指定评分的条目。`且` 关系。
- `rank`: 用于搜索指定排名的条目。`且` 关系。
- `nsfw`: 使用 `include` 包含NSFW搜索结果。默认排除搜索NSFW条目。无权限情况下忽略此选项,不会返回NSFW条目。
不同筛选条件之间为 `且`
由于目前 meilisearch 的一些问题,条目排名更新并不会触发搜索数据更新,所以条目排名可能是过期数据。
希望未来版本的 meilisearch 能解决相关的问题。
parameters:
- name: limit
in: query
description: 分页参数
required: false
schema:
type: integer
- name: offset
in: query
description: 分页参数
required: false
schema:
type: integer
requestBody:
content:
application/json:
schema:
type: object
required:
- keyword
properties:
keyword:
type: string
sort:
enum:
- match
- heat
- rank
- score
default: match
type: string
example: rank
description: |
排序规则
- `match` meilisearch 的默认排序,按照匹配程度
- `heat` 收藏人数
- `rank` 排名由高到低
- `score` 评分
filter:
type: object
description: 不同条件之间是 `且` 的关系
properties:
type:
type: array
items:
$ref: '#/components/schemas/SubjectType'
description: 条目类型,参照 `SubjectType` enum,多值之间为 `或` 的关系。
tag:
type: array
items:
type: string
example:
- 童年
- 原创
description: 标签,可以多次出现。多值之间为 `且` 关系。
air_date:
type: array
items:
type: string
example:
- '>=2020-07-01'
- <2020-10-01
description: 播出日期/发售日期,日期必需为 `YYYY-MM-DD` 格式。多值之间为 `且` 关系。
rating:
type: array
items:
type: string
example:
- '>=6'
- <8
description: 用于搜索指定评分的条目,多值之间为 `且` 关系。
rank:
type: array
items:
type: string
example:
- '>10'
- <=18
description: 用于搜索指定排名的条目,多值之间为 `且` 关系。
nsfw:
type: boolean
description: |
无权限的用户会直接忽略此字段,不会返回R18条目。
默认或者 `null` 会返回包含 R18 的所有搜索结果。
`true` 只会返回 R18 条目。
`false` 只会返回非 R18 条目。
responses:
'200':
description: 返回搜索结果
content:
application/json:
schema:
description: 用户信息
type: object
properties:
total:
description: 搜索结果数量
type: integer
example: 100
limit:
description: 当前分页参数
type: integer
example: 100
offset:
description: 当前分页参数
type: integer
example: 100
data:
type: array
items:
type: object
required:
- score
- id
- rank
- tags
- name
- name_cn
- image
- date
- summary
properties:
id:
description: 条目ID
type: integer
example: 8
type:
$ref: '#/components/schemas/SubjectType'
date:
type: string
description: 上映/开播/连载开始日期,可能为空字符串
image:
type: string
format: url
description: 封面
summary:
type: string
description: 条目描述
name:
type: string
description: 条目原名
name_cn:
type: string
description: 条目中文名
tags:
$ref: '#/components/schemas/SubjectTags'
score:
description: 评分
type: number
rank:
description: 排名
type: integer
/v0/subjects/{subject_id}:
get:
tags:
- 条目
summary: 获取条目
description: cache with 300s
operationId: getSubjectById
parameters:
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Subject'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/subjects/{subject_id}/image:
get:
tags:
- 条目
summary: Get Subject Image
operationId: getSubjectImageById
parameters:
- $ref: '#/components/parameters/path_subject_id'
- required: true
description: 枚举值 {small|grid|large|medium|common}
schema:
title: Image Type
type: string
name: type
in: query
responses:
'302':
description: Successful Response
headers:
Location:
schema:
type: string
description: |-
图片链接
无图时返回默认图片 https://lain.bgm.tv/img/no_icon_subject.png
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/subjects/{subject_id}/persons:
get:
tags:
- 条目
summary: Get Subject Persons
operationId: getRelatedPersonsBySubjectId
parameters:
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RelatedPerson'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/subjects/{subject_id}/characters:
get:
tags:
- 条目
summary: Get Subject Characters
operationId: getRelatedCharactersBySubjectId
parameters:
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/RelatedCharacter'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/subjects/{subject_id}/subjects:
get:
tags:
- 条目
summary: Get Subject Relations
operationId: getRelatedSubjectsBySubjectId
parameters:
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/v0_subject_relation'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/episodes:
get:
tags:
- 章节
summary: Get Episodes
operationId: getEpisodes
parameters:
- $ref: '#/components/parameters/query_subject_id'
- description: 参照章节的`type`
required: false
schema:
allOf:
- $ref: '#/components/schemas/EpType'
description: 参照章节的`type`
type: integer
name: type
in: query
- required: false
description: 分页参数
schema:
title: Limit
maximum: 200
minimum: 1
type: integer
default: 100
name: limit
in: query
- required: false
description: 分页参数
schema:
title: Offset
minimum: 0
type: integer
default: 0
name: offset
in: query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_Episode'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/episodes/{episode_id}:
get:
tags:
- 章节
summary: Get Episode
operationId: getEpisodeById
parameters:
- $ref: '#/components/parameters/path_episode_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeDetail'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/characters/{character_id}:
get:
tags:
- 角色
summary: Get Character Detail
description: cache with 60s
operationId: getCharacterById
parameters:
- $ref: '#/components/parameters/path_character_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CharacterDetail'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/characters/{character_id}/image:
get:
tags:
- 角色
summary: Get Character Image
operationId: getCharacterImageById
parameters:
- $ref: '#/components/parameters/path_character_id'
- required: true
description: 枚举值 {small|grid|large|medium}
schema:
title: Image Type
type: string
name: type
in: query
responses:
'302':
description: Successful Response
headers:
Location:
schema:
type: string
description: |-
图片链接
无图时返回默认图片 https://lain.bgm.tv/img/no_icon_subject.png
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/characters/{character_id}/subjects:
get:
tags:
- 角色
summary: get character related subjects
operationId: getRelatedSubjectsByCharacterId
parameters:
- $ref: '#/components/parameters/path_character_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/v0_RelatedSubject'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/characters/{character_id}/persons:
get:
tags:
- 角色
summary: get character related persons
operationId: getRelatedPersonsByCharacterId
parameters:
- $ref: '#/components/parameters/path_character_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CharacterPerson'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/persons/{person_id}:
get:
tags:
- 人物
summary: Get Person
description: cache with 60s
operationId: getPersonById
parameters:
- $ref: '#/components/parameters/path_person_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PersonDetail'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/persons/{person_id}/image:
get:
tags:
- 角色
summary: Get Person Image
operationId: getPersonImageById
parameters:
- $ref: '#/components/parameters/path_person_id'
- required: true
description: 枚举值 {small|grid|large|medium}
schema:
title: Image Type
type: string
name: type
in: query
responses:
'302':
description: Successful Response
headers:
Location:
schema:
type: string
description: |-
图片链接
无图时返回默认图片 https://lain.bgm.tv/img/no_icon_subject.png
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/persons/{person_id}/subjects:
get:
tags:
- 人物
summary: get person related subjects
operationId: getRelatedSubjectsByPersonId
parameters:
- $ref: '#/components/parameters/path_person_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/v0_RelatedSubject'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/persons/{person_id}/characters:
get:
tags:
- 人物
summary: get person related characters
operationId: getRelatedCharactersByPersonId
parameters:
- $ref: '#/components/parameters/path_person_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PersonCharacter'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/users/{username}:
get:
tags:
- 用户
summary: Get User by name
description: 获取用户信息
operationId: getUserByName
parameters:
- $ref: '#/components/parameters/path_username'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: username 太长
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 对应用户不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/users/{username}/avatar:
get:
tags:
- 用户
summary: Get User Avatar by name
description: 获取用户头像,302 重定向至头像地址,设置了 username 之后无法使用 UID 查询。
operationId: getUserAvatarByName
parameters:
- $ref: '#/components/parameters/path_username'
- required: true
description: 枚举值 {small|large|medium}
schema:
title: Avatar Type
type: string
name: type
in: query
responses:
'302':
description: Successful Response
headers:
Location:
schema:
type: string
description: |-
用户头像链接
无头像时返回默认头像 https://lain.bgm.tv/pic/user/m/icon.jpg
'400':
description: username 太长
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 对应用户不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/me:
get:
tags:
- 用户
summary: Get User
description: 返回当前 Access Token 对应的用户信息
operationId: getMyself
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'403':
description: unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
/v0/users/{username}/collections:
get:
tags:
- 收藏
summary: 获取用户收藏
description: 获取对应用户的收藏,查看私有收藏需要access token。
operationId: getUserCollectionsByUsername
parameters:
- $ref: '#/components/parameters/path_username'
- description: |-
条目类型,默认为全部
具体含义见 [SubjectType](#model-SubjectType)
required: false
schema:
$ref: '#/components/schemas/SubjectType'
name: subject_type
in: query
- description: |-
收藏类型,默认为全部
具体含义见 [CollectionType](#model-CollectionType)
required: false
schema:
allOf:
- $ref: '#/components/schemas/SubjectCollectionType'
type: integer
name: type
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_UserCollection'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 用户不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/users/{username}/collections/{subject_id}:
get:
tags:
- 收藏
summary: 获取用户单个收藏
description: 获取对应用户的收藏,查看私有收藏需要access token。
operationId: getUserCollection
parameters:
- $ref: '#/components/parameters/path_username'
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubjectCollection'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 用户不存在或者条目未收藏,或者条目为私有收藏
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/users/-/collections/{subject_id}:
post:
tags:
- 收藏
summary: 新增或修改用户单个收藏
description: |
修改条目收藏状态, 如果不存在则创建,如果存在则修改
由于直接修改剧集条目的完成度可能会引起意料之外效果,只能用于修改书籍类条目的完成度。
方法的所有请求体字段均可选
operationId: postUserCollection
parameters:
- $ref: '#/components/parameters/path_subject_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubjectCollectionModifyPayload'
responses:
'204':
description: Successful Response
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 用户不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
patch:
tags:
- 收藏
summary: 修改用户单个收藏
description: |
修改条目收藏状态
由于直接修改剧集条目的完成度可能会引起意料之外效果,只能用于修改书籍类条目的完成度。
PATCH 方法的所有请求体字段均可选
operationId: patchUserCollection
parameters:
- $ref: '#/components/parameters/path_subject_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubjectCollectionModifyPayload'
responses:
'204':
description: Successful Response
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 用户不存在或者条目未收藏
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- OptionalHTTPBearer: [ ]
/v0/users/-/collections/{subject_id}/episodes:
get:
tags:
- 收藏
summary: 章节收藏信息
operationId: getUserSubjectEpisodeCollection
parameters:
- $ref: '#/components/parameters/path_subject_id'
- $ref: '#/components/parameters/default_query_offset'
- required: false
schema:
title: Limit
maximum: 1000
minimum: 1
type: integer
default: 100
name: limit
description: 分页参数
in: query
- required: false
schema:
$ref: '#/components/schemas/EpType'
in: query
name: episode_type
description: 章节类型,不传则不按照章节进行筛选
responses:
'200':
description: Successful Response
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Page'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/UserEpisodeCollection'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 条目不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
patch:
tags:
- 收藏
summary: 章节收藏信息
description: |
同时会重新计算条目的完成度
operationId: patchUserSubjectEpisodeCollection
parameters:
- $ref: '#/components/parameters/path_subject_id'
requestBody:
content:
application/json:
schema:
type: object
required:
- episode_id
- type
properties:
episode_id:
type: array
items:
type: integer
example:
- 1
- 2
- 8
type:
$ref: '#/components/schemas/EpisodeCollectionType'
responses:
'204':
description: Successful Response
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 条目不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
/v0/users/-/collections/-/episodes/{episode_id}:
get:
tags:
- 收藏
summary: 章节收藏信息
operationId: getUserEpisodeCollection
parameters:
- $ref: '#/components/parameters/path_episode_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UserEpisodeCollection'
'400':
description: episode ID not valid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 条目或者章节不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
put:
tags:
- 收藏
summary: 更新章节收藏信息
operationId: putUserEpisodeCollection
parameters:
- $ref: '#/components/parameters/path_episode_id'
requestBody:
content:
application/json:
schema:
type: object
properties:
type:
$ref: '#/components/schemas/EpisodeCollectionType'
required:
- type
responses:
'204':
description: Successful Response
'400':
description: episode ID not valid or subject not collected
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: not authorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: 条目或者章节不存在
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
/v0/revisions/persons:
get:
tags:
- 编辑历史
summary: Get Person Revisions
operationId: getPersonRevisions
parameters:
- required: true
schema:
title: Person ID
minimum: 1
type: integer
name: person_id
description: 角色 ID
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_Revision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/persons/{revision_id}:
get:
tags:
- 编辑历史
summary: Get Person Revision
operationId: getPersonRevisionByRevisionId
parameters:
- required: true
schema:
title: Revision ID
minimum: 1
type: integer
name: revision_id
description: 历史版本 ID
in: path
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PersonRevision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/characters:
get:
tags:
- 编辑历史
summary: Get Character Revisions
operationId: getCharacterRevisions
parameters:
- required: true
schema:
title: Character ID
minimum: 1
type: integer
name: character_id
description: 角色 ID
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_Revision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/characters/{revision_id}:
get:
tags:
- 编辑历史
summary: Get Character Revision
operationId: getCharacterRevisionByRevisionId
parameters:
- $ref: '#/components/parameters/path_revision_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CharacterRevision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/subjects:
get:
tags:
- 编辑历史
summary: Get Subject Revisions
operationId: getSubjectRevisions
parameters:
- required: true
schema:
title: Subject ID
minimum: 1
type: integer
name: subject_id
description: 条目 ID
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_Revision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/subjects/{revision_id}:
get:
tags:
- 编辑历史
summary: Get Subject Revision
operationId: getSubjectRevisionByRevisionId
parameters:
- $ref: '#/components/parameters/path_revision_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SubjectRevision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/episodes:
get:
tags:
- 编辑历史
summary: Get Episode Revisions
operationId: getEpisodeRevisions
parameters:
- required: true
schema:
title: Episode ID
minimum: 1
type: integer
name: episode_id
description: 章节 ID
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Paged_Revision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/revisions/episodes/{revision_id}:
get:
tags:
- 编辑历史
summary: Get Episode Revision
operationId: getEpisodeRevisionByRevisionId
parameters:
- $ref: '#/components/parameters/path_revision_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DetailedRevision'
'400':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
/v0/indices:
post:
tags:
- 目录
summary: Create a new index
operationId: newIndex
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Index'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
security:
- HTTPBearer: [ ]
/v0/indices/{index_id}:
get:
tags:
- 目录
summary: Get Index By ID
operationId: getIndexById
parameters:
- $ref: '#/components/parameters/path_index_id'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Index'
'404':
$ref: '#/components/responses/404'
security:
- OptionalHTTPBearer: [ ]
put:
tags:
- 目录
summary: Edit index's information
operationId: editIndexById
parameters:
- $ref: '#/components/parameters/path_index_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexBasicInfo'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Index'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
security:
- HTTPBearer: [ ]
/v0/indices/{index_id}/subjects:
get:
tags:
- 目录
summary: Get Index Subjects
operationId: getIndexSubjectsByIndexId
parameters:
- $ref: '#/components/parameters/path_index_id'
- required: false
description: 条目类型
schema:
$ref: '#/components/schemas/SubjectType'
name: type
in: query
- $ref: '#/components/parameters/default_query_limit'
- $ref: '#/components/parameters/default_query_offset'
responses:
'200':
description: Successful Response
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
security:
- OptionalHTTPBearer: [ ]
post:
tags:
- 目录
summary: Add a subject to Index
operationId: addSubjectToIndexByIndexId
parameters:
- $ref: '#/components/parameters/path_index_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexSubjectAddInfo'
responses:
'200':
$ref: '#/components/responses/200-no-content'
'400':
$ref: '#/components/responses/401'
'401':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
security:
- HTTPBearer: [ ]
/v0/indices/{index_id}/subjects/{subject_id}:
put:
tags:
- 目录
summary: Edit subject information in a index
operationId: editIndexSubjectsByIndexIdAndSubjectID
description: 如果条目不存在于目录,会创建该条目
parameters:
- $ref: '#/components/parameters/path_index_id'
- $ref: '#/components/parameters/path_subject_id'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexSubjectEditInfo'
responses:
'200':
$ref: '#/components/responses/200-no-content'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
security:
- HTTPBearer: [ ]
delete:
tags:
- 目录
summary: Delete a subject from a Index
operationId: delelteSubjectFromIndexByIndexIdAndSubjectID
parameters:
- $ref: '#/components/parameters/path_index_id'
- $ref: '#/components/parameters/path_subject_id'
responses:
'200':
$ref: '#/components/responses/200-no-content'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
security:
- HTTPBearer: [ ]
/v0/indices/{index_id}/collect:
post:
tags:
- 目录
summary: Collect index for current user
operationId: collectIndexByIndexIdAndUserId
description: 为当前用户收藏一条目录
parameters:
- $ref: '#/components/parameters/path_index_id'
responses:
'200':
$ref: '#/components/responses/200-no-content'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
security:
- HTTPBearer: [ ]
delete:
tags:
- 目录
summary: Uncollect index for current user
operationId: uncollectIndexByIndexIdAndUserId
description: 为当前用户取消收藏一条目录
parameters:
- $ref: '#/components/parameters/path_index_id'
responses:
'200':
$ref: '#/components/responses/200-no-content'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
security:
- HTTPBearer: [ ]
components:
parameters:
path_subject_id:
required: true
name: subject_id
description: 条目 ID
schema:
$ref: '#/components/schemas/SubjectID'
in: path
path_username:
required: true
schema:
type: string
description: 设置了用户名之后无法使用 UID。
name: username
in: path
path_episode_id:
required: true
schema:
title: Episode ID
minimum: 1
description: 剧集 ID
type: integer
name: episode_id
description: 章节 ID
in: path
path_character_id:
required: true
description: 角色 ID
schema:
title: Character ID
minimum: 1
type: integer
name: character_id
in: path
path_person_id:
required: true
schema:
title: Person ID
minimum: 1
type: integer
name: person_id
description: 人物 ID
in: path
path_index_id:
required: true
description: 目录 ID
schema:
title: Index ID
minimum: 1
type: integer
name: index_id
in: path
query_subject_id:
required: true
name: subject_id
description: 条目 ID
schema:
$ref: '#/components/schemas/SubjectID'
in: query
default_query_limit:
required: false
schema:
title: Limit
maximum: 50
minimum: 1
type: integer
default: 30
name: limit
description: 分页参数
in: query
default_query_offset:
required: false
schema:
title: Offset
minimum: 0
type: integer
default: 0
description: 分页参数
name: offset
in: query
path_revision_id:
required: true
schema:
title: Revision ID
minimum: 1
type: integer
name: revision_id
description: 版本 ID
in: path
schemas:
SubjectID:
title: Subject ID
minimum: 1
description: 条目 ID
type: integer
User:
example:
avatar:
large: https://lain.bgm.tv/pic/user/l/000/00/00/1.jpg?r=1391790456
medium: https://lain.bgm.tv/pic/user/m/000/00/00/1.jpg?r=1391790456
small: https://lain.bgm.tv/pic/user/s/000/00/00/1.jpg?r=1391790456
sign: Awesome!
username: sai
nickname: Sai🖖
id: 1
user_group: 1
title: User
description: |
实际的返回值可能包括文档未声明的 `url` 字段,此字段主要用于开发者从 api 响应直接转跳到网页。
客户端开发者请不用依赖于此特性,此字段的值随时可能会改变。
required:
- id
- username
- nickname
- user_group
- avatar
- sign
type: object
properties:
id:
title: ID
type: integer
username:
title: Username
type: string
description: 唯一用户名,初始与 UID 相同,可修改一次
nickname:
title: Nickname
type: string
user_group:
$ref: '#/components/schemas/UserGroup'
avatar:
$ref: '#/components/schemas/Avatar'
sign:
title: Sign
description: 个人签名
type: string
Avatar:
example:
large: https://lain.bgm.tv/pic/user/l/000/00/00/1.jpg?r=1391790456
medium: https://lain.bgm.tv/pic/user/m/000/00/00/1.jpg?r=1391790456
small: https://lain.bgm.tv/pic/user/s/000/00/00/1.jpg?r=1391790456
title: Avatar
required:
- large
- medium
- small
type: object
properties:
large:
title: Large
type: string
format: url
medium:
title: Medium
type: string
format: url
small:
title: Small
type: string
format: url
UserGroup:
title: UserGroup
enum:
- 1
- 2
- 3
- 4
- 5
- 8
- 9
- 10
- 11
type: integer
description: >-
用户组 - 1 = 管理员 - 2 = Bangumi 管理猿 - 3 = 天窗管理猿 - 4 = 禁言用户 - 5 = 禁止访问用户 - 8
= 人物管理猿 - 9 = 维基条目管理猿 - 10 = 用户 - 11 = 维基人
x-ms-enum:
name: UserGroup
modelAsString: false
values:
- Admin
- BangumiAdmin
- DoujinAdmin
- MutedUser
- BlockedUser
- PersonAdmin
- WikiAdmin
- User
- WikiUser
x-enum-varnames:
- Admin
- BangumiAdmin
- DoujinAdmin
- MutedUser
- BlockedUser
- PersonAdmin
- WikiAdmin
- User
- WikiUser
BloodType:
title: BloodType
enum:
- 1
- 2
- 3
- 4
type: integer
description: Blood type of a person. A, B, AB, O
x-ms-enum:
name: BloodType
modelAsString: false
values:
- A
- B
- AB
- O
x-enum-varnames:
- A
- B
- AB
- O
CharacterDetail:
title: CharacterDetail
required:
- id
- name
- type
- summary
- locked
- stat
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/CharacterType'
description: 角色,机体,舰船,组织...
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
summary:
title: Summary
type: string
locked:
title: Locked
type: boolean
infobox:
title: Infobox
type: array
items:
type: object
description: |-
server parsed infobox, a map from key to string or tuple
null if server infobox is not valid
gender:
title: Gender
type: string
description: parsed from wiki, maybe null
blood_type:
type: integer
allOf:
- $ref: '#/components/schemas/BloodType'
description: parsed from wiki, maybe null, `1, 2, 3, 4` for `A, B, AB, O`
birth_year:
title: Birth Year
type: integer
description: parsed from wiki, maybe `null`
birth_mon:
title: Birth Mon
type: integer
description: parsed from wiki, maybe `null`
birth_day:
title: Birth Day
type: integer
description: parsed from wiki, maybe `null`
stat:
$ref: '#/components/schemas/Stat'
CharacterPerson:
title: CharacterPerson
required:
- id
- name
- type
- subject_id
- subject_name
- subject_name_cn
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/CharacterType'
description: 角色,机体,舰船,组织...
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
subject_id:
title: Subject ID
type: integer
subject_name:
title: Subject Name
type: string
subject_name_cn:
title: Subject Name Cn
type: string
staff:
title: Staff
type: string
CharacterType:
title: CharacterType
enum:
- 1
- 2
- 3
- 4
type: integer
description: type of a character 角色,机体,舰船,组织...
x-ms-enum:
name: CharacterType
modelAsString: false
values:
- Character
- Mechanic
- Ship
- Organization
x-enum-varnames:
- Character
- Mechanic
- Ship
- Organization
SubjectCollectionType:
title: CollectionType
example: 3
enum:
- 1
- 2
- 3
- 4
- 5
type: integer
description: |-
- `1`: 想看
- `2`: 看过
- `3`: 在看
- `4`: 搁置
- `5`: 抛弃
x-ms-enum:
name: CollectionType
modelAsString: false
values:
- Wish
- Done
- Doing
- OnHold
- Dropped
x-enum-varnames:
- Wish
- Done
- Doing
- OnHold
- Dropped
EpisodeCollectionType:
title: EpisodeCollectionType
example: 2
enum:
- 1
- 2
- 3
type: integer
description: |-
- `0`: 未收藏
- `1`: 想看
- `2`: 看过
- `3`: 抛弃
x-ms-enum:
name: EpisodeCollectionType
modelAsString: false
values:
- Wish
- Done
- Dropped
x-enum-varNames:
- Wish
- Done
- Dropped
Creator:
title: Creator
required:
- username
- nickname
type: object
properties:
username:
title: Username
type: string
nickname:
title: Nickname
type: string
description: 意义同Me
DetailedRevision:
title: DetailedRevision
required:
- id
- type
- summary
- created_at
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
creator:
$ref: '#/components/schemas/Creator'
summary:
title: Summary
type: string
created_at:
title: Created At
type: string
format: date-time
data:
title: Data
type: object
description: 编辑修改内容,响应类型不固定
PersonRevision:
title: PersonRevision
allOf:
- $ref: '#/components/schemas/Revision'
- type: object
properties:
data:
title: Data
type: object
additionalProperties:
$ref: '#/components/schemas/PersonRevisionDataItem'
PersonRevisionDataItem:
title: PersonRevisionDataItem
required:
- prsn_infobox
- prsn_summary
- profession
- extra
- prsn_name
type: object
properties:
prsn_infobox:
title: Person Infobox
type: string
prsn_summary:
title: Person Summary
type: string
profession:
$ref: '#/components/schemas/PersonRevisionProfession'
extra:
$ref: '#/components/schemas/RevisionExtra'
prsn_name:
title: Person Name
type: string
PersonRevisionProfession:
title: PersonRevisionProfession
type: object
properties:
producer:
title: Producer
type: string
mangaka:
title: Mangaka
type: string
artist:
title: Artist
type: string
seiyu:
title: Seiyu
type: string
writer:
title: Writer
type: string
illustrator:
title: Illustrator
type: string
actor:
title: Actor
type: string
RevisionExtra:
title: RevisionExtra
type: object
properties:
img:
title: Image
type: string
SubjectRevision:
title: SubjectRevision
allOf:
- $ref: '#/components/schemas/Revision'
- type: object
properties:
data:
$ref: '#/components/schemas/SubjectRevisionData'
SubjectRevisionData:
title: SubjectRevisionData
required:
- field_eps
- field_infobox
- field_summary
- name
- name_cn
- platform
- subject_id
- type
- type_id
- vote_field
type: object
properties:
field_eps:
title: Field EPs
type: integer
field_infobox:
title: Field Infobox
type: string
field_summary:
title: Field Summary
type: string
name:
title: Name
type: string
name_cn:
title: Name CN
type: string
platform:
title: Platform
type: integer
subject_id:
title: Subject ID
type: integer
type:
title: Type
type: integer
type_id:
title: Type ID
type: integer
vote_field:
title: Vote Field
type: string
CharacterRevision:
title: CharacterRevision
allOf:
- $ref: '#/components/schemas/Revision'
- type: object
properties:
data:
title: Data
additionalProperties:
$ref: '#/components/schemas/CharacterRevisionDataItem'
CharacterRevisionDataItem:
title: CharacterRevisionDataItem
required:
- infobox
- summary
- name
- extra
type: object
properties:
infobox:
title: Character Infobox
type: string
summary:
title: Character Summary
type: string
name:
title: Character Name
type: string
extra:
$ref: '#/components/schemas/RevisionExtra'
EpType:
title: EpType
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
type: integer
description: |-
本篇 = 0
特别篇 = 1
OP = 2
ED = 3
预告/宣传/广告 = 4
MAD = 5
其他 = 6
x-ms-enum:
name: EpType
modelAsString: false
values:
- MainStory
- SP
- OP
- ED
- PV
- MAD
- Other
x-enum-varnames:
- MainStory
- SP
- OP
- ED
- PV
- MAD
- Other
Episode:
title: Episode
required:
- id
- type
- name
- name_cn
- sort
- airdate
- comment
- duration
- desc
- disc
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
description: '`0` 本篇,`1` SP,`2` OP,`3` ED'
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
sort:
title: Sort
type: number
description: 同类条目的排序和集数
ep:
title: Ep
type: number
description: 条目内的集数, 从`1`开始。非本篇剧集的此字段无意义
airdate:
title: Airdate
type: string
comment:
title: Comment
type: integer
duration:
title: Duration
description: 维基人填写的原始时长
type: string
desc:
title: Desc
type: string
description: 简介
disc:
title: Disc
type: integer
description: 音乐曲目的碟片数
duration_seconds:
description: 服务器解析的时长,无法解析时为 `0`
type: integer
example:
airdate: ''
comment: 0
desc: ''
disc: 0
duration: ''
ep: 6
id: 8
name: 蒼と白の境界線
name_cn: ''
sort: 6
subject_id: 15
type: 0
duration_seconds: 1440
EpisodeDetail:
title: EpisodeDetail
required:
- id
- type
- name
- name_cn
- sort
- airdate
- comment
- duration
- desc
- disc
- subject_id
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
description: '`0` 本篇,`1` SP,`2` OP,`3` ED'
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
sort:
title: Sort
type: number
description: 同类条目的排序和集数
ep:
title: Ep
type: number
description: 条目内的集数, 从`1`开始。非本篇剧集的此字段无意义
airdate:
title: Airdate
type: string
comment:
title: Comment
type: integer
duration:
title: Duration
type: string
desc:
title: Desc
type: string
description: 简介
disc:
title: Disc
type: integer
description: 音乐曲目的碟片数
subject_id:
title: Subject ID
type: integer
ErrorDetail:
title: ErrorDetail
required:
- title
- description
type: object
properties:
title:
title: Title
type: string
description:
title: Description
type: string
details:
title: Detail
oneOf:
- type: string
- type: object
properties:
error:
type: string
description: error message
path:
type: string
description: request path
Images:
title: Images
required:
- large
- common
- medium
- small
- grid
type: object
properties:
large:
title: Large
type: string
common:
title: Common
type: string
medium:
title: Medium
type: string
small:
title: Small
type: string
grid:
title: Grid
type: string
Index:
title: Index
required:
- id
- title
- desc
- stat
- created_at
- updated_at
- creator
- ban
- nsfw
type: object
properties:
id:
title: ID
type: integer
title:
title: Title
type: string
desc:
title: Desc
type: string
total:
title: Total
type: integer
description: 收录条目总数
default: 0
stat:
title: Stat
type: object
allOf:
- $ref: '#/components/schemas/Stat'
description: 目录评论及收藏数
created_at:
title: Created At
type: string
format: date-time
updated_at:
title: Updated At
type: string
format: date-time
creator:
$ref: '#/components/schemas/Creator'
ban:
title: Ban
deprecated: true
type: boolean
description: deprecated, always false.
nsfw:
title: 目录是否包括 nsfw 条目
type: boolean
IndexSubject:
title: IndexSubject
required:
- id
- type
- name
- comment
- added_at
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
name:
title: Name
type: string
images:
$ref: '#/components/schemas/Images'
infobox:
$ref: '#/components/schemas/WikiV0'
date:
title: Date
type: string
comment:
title: Comment
type: string
added_at:
title: Added At
type: string
format: date-time
description: 同名字段意义同Subject
IndexBasicInfo:
title: IndexBasicInfo
type: object
description: 新增或修改条目的内容,同名字段意义同Subject
properties:
title:
title: Title
type: string
description:
title: Description
type: string
IndexSubjectAddInfo:
title: IndexBasicInfo
type: object
description: 新增某条目到目录的请求信息
properties:
subject_id:
title: Subject ID
type: integer
sort:
title: Sort
type: integer
description: 排序条件,越小越靠前
comment:
title: Comment
type: string
IndexSubjectEditInfo:
title: IndexBasicInfo
type: object
description: 修改目录中条目的信息
properties:
sort:
title: Sort
type: integer
description: 排序条件,越小越靠前
comment:
title: Comment
type: string
WikiV0:
title: Infobox
type: array
items:
title: Item
required:
- key
- value
type: object
properties:
key:
title: Key
type: string
value:
title: Value
type: object
anyOf:
- type: string
- type: array
items:
anyOf:
- title: KV
required:
- k
- v
type: object
properties:
k:
title: K
type: string
v:
title: V
type: string
- title: V
required:
- v
type: object
properties:
v:
title: V
type: string
example:
- key: 简体中文名
value: 鲁路修·兰佩路基
- key: 别名
value:
- v: L.L.
- v: 勒鲁什
- v: 鲁鲁修
- v: ゼロ
- v: Zero
- k: 英文名
v: Lelouch Lamperouge
- k: 第二中文名
v: 鲁路修·冯·布里塔尼亚
- k: 英文名二
v: Lelouch Vie Britannia
- k: 日文名
v: ルルーシュ・ヴィ・ブリタニア
- key: 性别
value: 男
- key: 生日
value: 12月5日
- key: 血型
value: A型
- key: 身高
value: 178cm→181cm
- key: 体重
value: 54kg
- key: 引用来源
value: Wikipedia
Page:
type: object
required:
- total
- limit
- offset
properties:
total:
title: Total
type: integer
limit:
title: Limit
type: integer
offset:
title: Offset
type: integer
Paged_Episode:
title: Paged[Episode]
type: object
properties:
total:
title: Total
type: integer
default: 0
limit:
title: Limit
type: integer
default: 0
offset:
title: Offset
type: integer
default: 0
data:
title: Data
type: array
items:
$ref: '#/components/schemas/Episode'
default: [ ]
Paged_IndexSubject:
title: Paged[IndexSubject]
type: object
properties:
total:
title: Total
type: integer
default: 0
limit:
title: Limit
type: integer
default: 0
offset:
title: Offset
type: integer
default: 0
data:
title: Data
type: array
items:
$ref: '#/components/schemas/IndexSubject'
default: [ ]
Paged_Revision:
title: Paged[Revision]
type: object
properties:
total:
title: Total
type: integer
default: 0
limit:
title: Limit
type: integer
default: 0
offset:
title: Offset
type: integer
default: 0
data:
title: Data
type: array
items:
$ref: '#/components/schemas/Revision'
default: [ ]
Paged_UserCollection:
title: Paged[UserCollection]
type: object
properties:
total:
title: Total
type: integer
default: 0
limit:
title: Limit
type: integer
default: 0
offset:
title: Offset
type: integer
default: 0
data:
title: Data
type: array
items:
$ref: '#/components/schemas/UserSubjectCollection'
default: [ ]
Person:
title: Person
required:
- id
- name
- type
- career
- short_summary
- locked
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/PersonType'
description: '`1`, `2`, `3` 表示 `个人`, `公司`, `组合`'
career:
type: array
items:
$ref: '#/components/schemas/PersonCareer'
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
short_summary:
title: Short Summary
type: string
locked:
title: Locked
type: boolean
PersonCareer:
title: PersonCareer
enum:
- producer
- mangaka
- artist
- seiyu
- writer
- illustrator
- actor
type: string
description: An enumeration.
PersonCharacter:
title: PersonCharacter
required:
- id
- name
- type
- subject_id
- subject_name
- subject_name_cn
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/CharacterType'
description: 角色,机体,舰船,组织...
images:
title: Images
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
subject_id:
title: Subject ID
type: integer
subject_name:
title: Subject Name
type: string
subject_name_cn:
title: Subject Name Cn
type: string
staff:
title: Staff
type: string
PersonDetail:
title: PersonDetail
required:
- id
- name
- type
- career
- summary
- locked
- last_modified
- stat
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/PersonType'
description: '`1`, `2`, `3` 表示 `个人`, `公司`, `组合`'
career:
type: array
items:
$ref: '#/components/schemas/PersonCareer'
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
summary:
title: Summary
type: string
locked:
title: Locked
type: boolean
last_modified:
title: Last Modified
type: string
description: >-
currently it's latest user comment time, it will be replaced by wiki
modified date in the future
format: date-time
infobox:
title: Infobox
type: array
items:
type: object
description: |-
server parsed infobox, a map from key to string or tuple
null if server infobox is not valid
gender:
title: Gender
type: string
description: parsed from wiki, maybe null
blood_type:
type: integer
allOf:
- $ref: '#/components/schemas/BloodType'
description: parsed from wiki, maybe null, `1, 2, 3, 4` for `A, B, AB, O`
birth_year:
title: Birth Year
type: integer
description: parsed from wiki, maybe `null`
birth_mon:
title: Birth Mon
type: integer
description: parsed from wiki, maybe `null`
birth_day:
title: Birth Day
type: integer
description: parsed from wiki, maybe `null`
stat:
$ref: '#/components/schemas/Stat'
PersonImages:
title: PersonImages
required:
- large
- medium
- small
- grid
type: object
properties:
large:
title: Large
type: string
medium:
title: Medium
type: string
small:
title: Small
type: string
grid:
title: Grid
type: string
PersonType:
title: PersonType
enum:
- 1
- 2
- 3
type: integer
description: '`1`, `2`, `3` 表示 `个人`, `公司`, `组合`'
x-ms-enum:
name: PersonType
modelAsString: false
values:
- Individual
- Corporation
- Association
x-enum-varnames:
- Individual
- Corporation
- Association
RelatedCharacter:
title: RelatedCharacter
required:
- id
- name
- type
- relation
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/CharacterType'
description: 角色,机体,舰船,组织...
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
relation:
title: Relation
type: string
actors:
title: Actors
type: array
items:
$ref: '#/components/schemas/Person'
description: 演员列表
default: [ ]
RelatedPerson:
title: RelatedPerson
required:
- id
- name
- type
- career
- relation
type: object
properties:
id:
title: ID
type: integer
name:
title: Name
type: string
type:
type: integer
allOf:
- $ref: '#/components/schemas/PersonType'
description: '`1`, `2`, `3` 表示 `个人`, `公司`, `组合`'
career:
type: array
items:
$ref: '#/components/schemas/PersonCareer'
images:
title: Images
type: object
allOf:
- $ref: '#/components/schemas/PersonImages'
description: object with some size of images, this object maybe `null`
relation:
title: Relation
type: string
Revision:
title: Revision
required:
- id
- type
- summary
- created_at
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
creator:
$ref: '#/components/schemas/Creator'
summary:
title: Summary
type: string
created_at:
title: Created At
type: string
format: date-time
Stat:
title: Stat
required:
- comments
- collects
type: object
properties:
comments:
title: Comments
type: integer
collects:
title: Collects
type: integer
Subject:
title: Subject
required:
- id
- type
- name
- name_cn
- summary
- nsfw
- locked
- platform
- volumes
- eps
- total_episodes
- rating
- images
- collection
- tags
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
allOf:
- $ref: '#/components/schemas/SubjectType'
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
summary:
title: Summary
type: string
nsfw:
title: Nsfw
type: boolean
locked:
title: Locked
type: boolean
date:
title: Date
type: string
description: air date in `YYYY-MM-DD` format
platform:
title: Platform
type: string
description: TV, Web, 欧美剧, PS4...
images:
$ref: '#/components/schemas/Images'
infobox:
$ref: '#/components/schemas/WikiV0'
volumes:
title: Volumes
type: integer
description: 书籍条目的册数,由旧服务端从wiki中解析
eps:
title: Eps
type: integer
description: 由旧服务端从wiki中解析,对于书籍条目为`话数`
total_episodes:
title: Total Episodes
type: integer
description: 数据库中的章节数量
rating:
title: Rating
required:
- rank
- total
- count
- score
type: object
properties:
rank:
title: Rank
type: integer
total:
title: Total
type: integer
count:
title: Count
type: object
properties:
'1':
type: integer
'2':
type: integer
'3':
type: integer
'4':
type: integer
'5':
type: integer
'6':
type: integer
'7':
type: integer
'8':
type: integer
'9':
type: integer
'10':
type: integer
score:
title: Score
type: number
collection:
title: Collection
required:
- wish
- collect
- doing
- on_hold
- dropped
type: object
properties:
wish:
title: Wish
type: integer
collect:
title: Collect
type: integer
doing:
title: Doing
type: integer
on_hold:
title: On Hold
type: integer
dropped:
title: Dropped
type: integer
tags:
$ref: '#/components/schemas/SubjectTags'
SlimSubject:
title: SlimSubject
required:
- images
- name
- name_cn
- short_summary
- tags
- score
- type
- id
- eps
- volumes
- collection_total
- rank
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
allOf:
- $ref: '#/components/schemas/SubjectType'
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
short_summary:
title: Summary
type: string
description: 截短后的条目描述。
date:
title: Date
type: string
description: air date in `YYYY-MM-DD` format
images:
$ref: '#/components/schemas/Images'
volumes:
title: Volumes
type: integer
description: 书籍条目的册数,由旧服务端从wiki中解析
eps:
title: Eps
type: integer
description: 由旧服务端从wiki中解析,对于书籍条目为`话数`
collection_total:
description: 收藏人数
title: Total
type: integer
score:
description: 分数
title: Total
type: number
tags:
description: 前 10 个 tag
allOf:
- $ref: '#/components/schemas/SubjectTags'
SubjectTags:
title: Tags
type: array
items:
title: Tag
required:
- name
- count
type: object
properties:
name:
title: Name
type: string
count:
title: Count
type: integer
SubjectType:
title: SubjectType
example: 2
enum:
- 1
- 2
- 3
- 4
- 6
type: integer
description: |-
条目类型
- `1` 为 书籍
- `2` 为 动画
- `3` 为 音乐
- `4` 为 游戏
- `6` 为 三次元
没有 `5`
x-ms-enum:
name: SubjectType
modelAsString: false
values:
- Book
- Anime
- Music
- Game
- Real
x-enum-varnames:
- Book
- Anime
- Music
- Game
- Real
UserSubjectCollection:
title: UserSubjectCollection
required:
- subject_id
- subject_type
- rate
- type
- tags
- ep_status
- vol_status
- updated_at
- private
type: object
properties:
subject_id:
title: Subject ID
type: integer
example: 8
subject_type:
$ref: '#/components/schemas/SubjectType'
rate:
example: 4
title: Rate
type: integer
type:
$ref: '#/components/schemas/SubjectCollectionType'
comment:
title: Comment
type: string
example: 看看
tags:
title: Tags
type: array
example:
- 柯南
- 万年小学生
- 推理
- 青山刚昌
- TV
items:
type: string
ep_status:
title: Ep Status
type: integer
example: 5
vol_status:
title: Vol Status
type: integer
example: 0
updated_at:
example: '2022-06-19T18:44:13.6140127+08:00'
description: 本时间并不代表条目的收藏时间。修改评分,评价,章节观看状态等收藏信息时未更新此时间是一个 bug。请不要依赖此特性
title: Updated At
type: string
format: date-time
private:
title: Private
type: boolean
subject:
$ref: '#/components/schemas/SlimSubject'
UserSubjectCollectionModifyPayload:
title: UserSubjectCollectionModifyPayload
type: object
description: 所有的字段均可选
properties:
type:
description: 修改条目收藏类型
allOf:
- $ref: '#/components/schemas/SubjectCollectionType'
rate:
description: 评分,`0` 表示删除评分
type: integer
maximum: 10
minimum: 0
exclusiveMaximum: false
exclusiveMinimum: false
ep_status:
description: 只能用于修改书籍条目进度
type: integer
minimum: 0
exclusiveMinimum: false
vol_status:
description: 只能用于修改书籍条目进度
type: integer
minimum: 0
exclusiveMinimum: false
comment:
description: 评价
type: string
private:
description: 仅自己可见
type: boolean
tags:
title: 标签
description: 不传或者 `null` 都会被忽略,传 `[]` 则会删除所有 tag。
type: array
items:
type: string
description: 不能包含空格
UserEpisodeCollection:
additionalProperties: false
properties:
episode:
$ref: '#/components/schemas/Episode'
type:
$ref: '#/components/schemas/EpisodeCollectionType'
required:
- episode
- type
type: object
v0_RelatedSubject:
title: RelatedSubject
required:
- id
- staff
- name_cn
type: object
properties:
id:
title: ID
type: integer
staff:
title: Staff
type: string
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
image:
title: Image
type: string
v0_subject_relation:
title: SubjectRelation
required:
- id
- type
- name
- name_cn
- relation
type: object
properties:
id:
title: ID
type: integer
type:
title: Type
type: integer
name:
title: Name
type: string
name_cn:
title: Name Cn
type: string
images:
$ref: '#/components/schemas/Images'
relation:
title: Relation
type: string
securitySchemes:
OptionalHTTPBearer:
type: http
description: 不强制要求用户认证,但是可能看不到某些敏感内容内容(如 NSFW 或者仅用户自己可见的收藏)
scheme: Bearer
HTTPBearer:
type: http
description: 需要使用 access token 进行认证
scheme: Bearer
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDetail'
200-no-content:
description: Successful Response