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