diff --git a/src/1.6.11/types/api/admin/reports/index.ts b/src/1.6.11/types/api/admin/reports/index.ts new file mode 100644 index 0000000..d94d197 --- /dev/null +++ b/src/1.6.11/types/api/admin/reports/index.ts @@ -0,0 +1,31 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import Page from "1.6.11/types/modules/page"; + +export default interface AdminReports { + "admin/reports/": { + body?: Page; + response: { + /** 成功かどうか */ + success: true; + /** 未解決の通報 */ + data: { + /** 通報されたユーザーID */ + reported_userid: string; + /** reported_useridへの通報数 */ + total_count: number; + /** reported_useridへの通報内容 */ + details: { + /** 通報のユニークID */ + uniqid: string; + /** 通報者 */ + reporter_userid: string; + /** メッセージ */ + message: string; + /** 通報時刻 */ + datetime: string; + }[] + }[]; + } | InputError | AuthError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/admin/reports/resolve.ts b/src/1.6.11/types/api/admin/reports/resolve.ts new file mode 100644 index 0000000..f97121b --- /dev/null +++ b/src/1.6.11/types/api/admin/reports/resolve.ts @@ -0,0 +1,25 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; + +export default interface AdminReportsResolve { + "admin/reports/resolve": { + body: { + /** 対象のユーザーへの通報を全て解決済みにする場合の対象のユーザーID */ + reported_userid: string; + } | { + /** 特定の通報を解決済みにする場合の通報のユニークID */ + uniqid: string; + }; + response: { + /** 成功かどうか */ + success: true; + /** 解決済みにした通報の宛先のユーザーID */ + reported_userid: string; + } | InputError | AuthError | { + /** 成功かどうか */ + success: false; + /** エラーコード */ + error_code: "could_not_complete" | "db_error_update"; + }; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/admin/users/index.ts b/src/1.6.11/types/api/admin/users/index.ts new file mode 100644 index 0000000..12a3b03 --- /dev/null +++ b/src/1.6.11/types/api/admin/users/index.ts @@ -0,0 +1,29 @@ +import { UserResponse } from "1.6.11/types/api/users"; + +export default interface AdminUsers { + "admin/users/": { + body: { + /** ユーザーID */ + userid: string; + }; + response: UserResponse & { + /** + * オンラインステータス + * nullになることはなく、記録がない場合はOffline、非公開設定であっても入力されます。 + */ + real_online_status: "Online" | "Away" | "Offline"; + /** + * 最終利用時刻 + * YYYY-MM-DD HH:MM:SS形式です。 + */ + last_login_datetime?: string; + /** 最終利用IPアドレス */ + last_login_ipaddress?: string; + /** メールアドレス */ + mailaddress?: string; + /** 二段階認証を設定しているかどうか */ + is_2fa_configured: boolean; + // last_login_*とメアドは任意かわからないので検証が必要 + }; + }; +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/admin/users/sanction.ts b/src/1.6.11/types/api/admin/users/sanction.ts new file mode 100644 index 0000000..da68a50 --- /dev/null +++ b/src/1.6.11/types/api/admin/users/sanction.ts @@ -0,0 +1,57 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { UserDataNotFound } from "1.6.11/types/modules/error/critical"; + +interface RequestBase { + /** 対象のユーザーID */ + userid: T; +} + +interface Message { + /** メッセージ */ + notification_message: string; +} + +type Notification = RequestBase & Message & { + /** 内容 */ + type: "notification"; + /** タイトル */ + notification_title: string; +} + +type Frozen = RequestBase & Message & { + /** 内容 */ + type: "frozen"; +} + +type UnFrozen = RequestBase & { + /** 内容 */ + type: "unfrozen"; +} + +type Ban = RequestBase & { + /** 内容 */ + type: "ban"; + /** + * 確認文字列 + * トークンのユーザーのTOTPが有効な場合はTOTPコード、無効な場合はyes_i_will_delete_{対象のユーザーID}を入力してください。 + */ + really: string; +} + +export default interface AdminUsersSanction { + "admin/users/sanction": { + body: Notification | Frozen | UnFrozen | Ban; + response: { + /** 成功かどうか */ + success: true; + /** ユーザーID */ + userid: T; + } | InputError | AuthError | UserDataNotFound | { + /** 成功かどうか */ + success: false; + /** エラーコード */ + error_code: "content_to_512_characters" | "content_to_16777216_characters" | "could_not_complete" | "already_been_completed" | "user_not_frozen_cant_be_banned"; + }; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/favorite/change.ts b/src/1.6.11/types/api/favorite/change.ts new file mode 100644 index 0000000..5de099a --- /dev/null +++ b/src/1.6.11/types/api/favorite/change.ts @@ -0,0 +1,17 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; + +export default interface FavoriteChange { + "favorite/change": { + body: { + /** ユーズのユニークID */ + uniqid: string; + }; + response: { + /** 成功かどうか */ + success: true; + /** いいね後のいいねしたユーザー */ + favorite_list: string[]; + } | InputError | AuthError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/favorite/get.ts b/src/1.6.11/types/api/favorite/get.ts new file mode 100644 index 0000000..451fbd6 --- /dev/null +++ b/src/1.6.11/types/api/favorite/get.ts @@ -0,0 +1,17 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; + +export default interface FavoriteGet { + "favorite/get": { + body: { + /** ユーズのユニークID */ + uniqid: string; + }; + response: { + /** 成功かどうか */ + success: true; + /** いいねしたユーザー */ + favorite_list: string[]; + } | InputError | AuthError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/me/notification/index.ts b/src/1.6.11/types/api/me/notification/index.ts index c32eb4b..55e72f2 100644 --- a/src/1.6.11/types/api/me/notification/index.ts +++ b/src/1.6.11/types/api/me/notification/index.ts @@ -1,14 +1,10 @@ import InputError from "1.6.11/types/modules/error/input"; import AuthError from "1.6.11/types/modules/error/auth"; +import Page from "1.6.11/types/modules/page"; export default interface MeNotification { "me/notification/": { - body?: { - /** 制限数 */ - limit?: number; - /** ページ */ - page?: number; - }; + body?: Page; response: { /** 成功かどうか */ success: true; diff --git a/src/1.6.11/types/api/token/get.ts b/src/1.6.11/types/api/token/get.ts new file mode 100644 index 0000000..0abd165 --- /dev/null +++ b/src/1.6.11/types/api/token/get.ts @@ -0,0 +1,26 @@ +import InputError from "1.6.11/types/modules/error/input"; +import { UserDataNotFound } from "1.6.11/types/modules/error/critical"; + +export default interface TokenGet { + "ueuse/get": { + body: { + /** api/authで使用したセッション */ + session: string; + }; + response: { + /** 成功かどうか */ + success: true; + /** ユーザー名 */ + username: string; + /** ユーザーID */ + userid: string; + /** APIトークン */ + token: string; + } | InputError | UserDataNotFound | { + /** 成功かどうか */ + success: false; + /** エラーコード */ + error_code: "session_invalid"; + }; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/bookmark/index.ts b/src/1.6.11/types/api/ueuse/bookmark/index.ts new file mode 100644 index 0000000..2c9ed91 --- /dev/null +++ b/src/1.6.11/types/api/ueuse/bookmark/index.ts @@ -0,0 +1,17 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { ueuseModule } from "1.6.11/types/modules/ueuse"; +import ueuseError from "1.6.11/types/modules/error/ueuse"; +import Page from "1.6.11/types/modules/page"; + +export default interface UeuseBookmark { + "ueuse/bookmark/": { + body?: Page; + response: { + /** 成功かどうか */ + success: true; + /** ブックマークしているユーズ */ + data: ueuseModule[]; + } | InputError | AuthError | ueuseError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/create.ts b/src/1.6.11/types/api/ueuse/create.ts new file mode 100644 index 0000000..9bd328a --- /dev/null +++ b/src/1.6.11/types/api/ueuse/create.ts @@ -0,0 +1,33 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { Media } from "1.6.11/types/modules/ueuse"; + +export default interface UeuseCreate { + "ueuse/get": { + body: { + /** 本文 */ + text: string; + /** NSFWにするかどうか */ + nsfw?: boolean; + /** 返信先ユーズのユニークID */ + replyid?: string; + /** リユーズ/引用元ユーズのユニークID */ + reuseid?: string; + } & Media; + response: { + /** 成功かどうか */ + success: true; + /** ユーズのユニークID */ + uniqid: string; + /** ユーザーID */ + userid: string; + } | InputError | AuthError | { + /** 成功かどうか */ + success: false; + /** エラーコード */ + error_code: "could_not_complete" | "upload_error" | + "contains_prohibited_url" | "over_rate_limit" | string; + // 文字数超過が動的なので補完+string + }; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/delete.ts b/src/1.6.11/types/api/ueuse/delete.ts new file mode 100644 index 0000000..1bae816 --- /dev/null +++ b/src/1.6.11/types/api/ueuse/delete.ts @@ -0,0 +1,21 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; + +interface ResponseBase { + /** 成功かどうか */ + success: S; + /** ユーズのユニークID */ + uniqid: T; + /** ユーザーID */ + userid: string; +} + +export default interface UeuseDelete { + "ueuse/delete": { + body: { + /** ユーズのユニークID */ + uniqid: T; + }; + response: ResponseBase | InputError | AuthError | ResponseBase; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/get.ts b/src/1.6.11/types/api/ueuse/get.ts new file mode 100644 index 0000000..e03adf4 --- /dev/null +++ b/src/1.6.11/types/api/ueuse/get.ts @@ -0,0 +1,19 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { ueuseModule } from "1.6.11/types/modules/ueuse"; +import ueuseError from "1.6.11/types/modules/error/ueuse"; + +export default interface UeuseGet { + "ueuse/get": { + body: { + /** 取得するユーズのユニークID */ + uniqid: string; + }; + response: { + /** 成功かどうか */ + success: true; + /** ユーズ(要求したユーズのみ) */ + data: ueuseModule[]; + } | InputError | AuthError | ueuseError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/index.ts b/src/1.6.11/types/api/ueuse/index.ts index 808f970..baff1ea 100644 --- a/src/1.6.11/types/api/ueuse/index.ts +++ b/src/1.6.11/types/api/ueuse/index.ts @@ -2,15 +2,11 @@ import InputError from "1.6.11/types/modules/error/input"; import AuthError from "1.6.11/types/modules/error/auth"; import { ueuseModule } from "1.6.11/types/modules/ueuse"; import ueuseError from "1.6.11/types/modules/error/ueuse"; +import Page from "1.6.11/types/modules/page"; export default interface Ueuse { "ueuse/": { - body?: { - /** 制限数 */ - limit?: number; - /** ページ */ - page?: number; - }; + body?: Page; response: { /** 成功かどうか */ success: true; diff --git a/src/1.6.11/types/api/ueuse/mentions.ts b/src/1.6.11/types/api/ueuse/mentions.ts new file mode 100644 index 0000000..36e83be --- /dev/null +++ b/src/1.6.11/types/api/ueuse/mentions.ts @@ -0,0 +1,17 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { ueuseModule } from "1.6.11/types/modules/ueuse"; +import ueuseError from "1.6.11/types/modules/error/ueuse"; +import Page from "1.6.11/types/modules/page"; + +export default interface UeuseMentions { + "ueuse/mentions": { + body?: Page; + response: { + /** 成功かどうか */ + success: true; + /** メンションされているユーズ */ + data: ueuseModule[]; + } | InputError | AuthError | ueuseError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/replies.ts b/src/1.6.11/types/api/ueuse/replies.ts new file mode 100644 index 0000000..021aa28 --- /dev/null +++ b/src/1.6.11/types/api/ueuse/replies.ts @@ -0,0 +1,23 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { ueuseModule } from "1.6.11/types/modules/ueuse"; +import ueuseError from "1.6.11/types/modules/error/ueuse"; +import Page from "1.6.11/types/modules/page"; + +export default interface UeuseReplies { + "ueuse/replies": { + body: { + /** 元ユーズのユニークID */ + uniqid: string; + } & Page; + response: { + /** 成功かどうか */ + success: true; + /** + * 元ユーズ(1番目)と返信(2番目以降) + * 元ユーズが削除されている場合は返信が1番目以降になります。 + */ + data: ueuseModule[]; + } | InputError | AuthError | ueuseError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/api/ueuse/search.ts b/src/1.6.11/types/api/ueuse/search.ts new file mode 100644 index 0000000..5405029 --- /dev/null +++ b/src/1.6.11/types/api/ueuse/search.ts @@ -0,0 +1,20 @@ +import InputError from "1.6.11/types/modules/error/input"; +import AuthError from "1.6.11/types/modules/error/auth"; +import { ueuseModule } from "1.6.11/types/modules/ueuse"; +import ueuseError from "1.6.11/types/modules/error/ueuse"; +import Page from "1.6.11/types/modules/page"; + +export default interface UeuseSearch { + "ueuse/search": { + body: { + /** 検索キーワード */ + keyword: string; + } & Page; + response: { + /** 成功かどうか */ + success: true; + /** 検索結果 */ + data: ueuseModule[]; + } | InputError | AuthError | ueuseError; + } +}; \ No newline at end of file diff --git a/src/1.6.11/types/modules/page.ts b/src/1.6.11/types/modules/page.ts new file mode 100644 index 0000000..d6944b0 --- /dev/null +++ b/src/1.6.11/types/modules/page.ts @@ -0,0 +1,6 @@ +export default interface Page { + /** 制限数 */ + limit?: number; + /** ページ */ + page?: number; +} \ No newline at end of file diff --git a/src/1.6.11/types/modules/ueuse.ts b/src/1.6.11/types/modules/ueuse.ts index 2c587ee..5852eb1 100644 --- a/src/1.6.11/types/modules/ueuse.ts +++ b/src/1.6.11/types/modules/ueuse.ts @@ -19,7 +19,7 @@ type Abi = { abidatetime: "0000-00-00 00:00:00"; } -type Media = +export type Media = | { /** * 画像1URL @@ -197,8 +197,10 @@ interface QuoteReuse extends ueuseBase { reuseid: string; } +type Ext = Abi & Media; + export type ueuseModule = - | (NormalUeuse & Abi & Media) - | (ReplyUeuse & Abi & Media) - | (QuoteReuse & Abi & Media) + | (NormalUeuse & Ext) + | (ReplyUeuse & Ext) + | (QuoteReuse & Ext) | Reuse; \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 1b1e71d..17f947c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -108,6 +108,17 @@ export default class uwuzu< data, }; } + + if (res.favorite_list !== undefined && res.success === true) { + res.success = undefined; + + const list = res.favorite_list.split(","); + + return { + success: true, + favorite_list: list, + }; + } return res; }