forked from mirrors/firefish
621be91cdb
This reverts commit 8033492c7c
.
1082 lines
27 KiB
TypeScript
1082 lines
27 KiB
TypeScript
import {
|
|
Ad,
|
|
Announcement,
|
|
Antenna,
|
|
App,
|
|
AuthSession,
|
|
Blocking,
|
|
Channel,
|
|
Clip,
|
|
DateString,
|
|
DetailedInstanceMetadata,
|
|
DriveFile,
|
|
DriveFolder,
|
|
Following,
|
|
FollowingFolloweePopulated,
|
|
FollowingFollowerPopulated,
|
|
FollowRequest,
|
|
GalleryPost,
|
|
Instance,
|
|
InstanceMetadata,
|
|
LiteInstanceMetadata,
|
|
MeDetailed,
|
|
Note,
|
|
NoteFavorite,
|
|
OriginType,
|
|
Page,
|
|
ServerInfo,
|
|
Stats,
|
|
User,
|
|
UserDetailed,
|
|
UserGroup,
|
|
UserList,
|
|
UserSorting,
|
|
Notification,
|
|
NoteReaction,
|
|
Signin,
|
|
MessagingMessage,
|
|
} from "./entities";
|
|
|
|
type TODO = Record<string, any> | null;
|
|
|
|
type NoParams = Record<string, never>;
|
|
|
|
type ShowUserReq = { username: string; host?: string } | { userId: User["id"] };
|
|
|
|
export type Endpoints = {
|
|
// admin
|
|
"admin/abuse-user-reports": { req: TODO; res: TODO };
|
|
"admin/delete-all-files-of-a-user": {
|
|
req: { userId: User["id"] };
|
|
res: null;
|
|
};
|
|
"admin/delete-logs": { req: NoParams; res: null };
|
|
"admin/get-index-stats": { req: TODO; res: TODO };
|
|
"admin/get-table-stats": { req: TODO; res: TODO };
|
|
"admin/invite": { req: TODO; res: TODO };
|
|
"admin/logs": { req: TODO; res: TODO };
|
|
"admin/reset-password": { req: TODO; res: TODO };
|
|
"admin/resolve-abuse-user-report": { req: TODO; res: TODO };
|
|
"admin/resync-chart": { req: TODO; res: TODO };
|
|
"admin/send-email": { req: TODO; res: TODO };
|
|
"admin/server-info": { req: TODO; res: TODO };
|
|
"admin/show-moderation-logs": { req: TODO; res: TODO };
|
|
"admin/show-user": { req: TODO; res: TODO };
|
|
"admin/show-users": { req: TODO; res: TODO };
|
|
"admin/silence-user": { req: TODO; res: TODO };
|
|
"admin/suspend-user": { req: TODO; res: TODO };
|
|
"admin/unsilence-user": { req: TODO; res: TODO };
|
|
"admin/unsuspend-user": { req: TODO; res: TODO };
|
|
"admin/update-meta": { req: TODO; res: TODO };
|
|
"admin/vacuum": { req: TODO; res: TODO };
|
|
"admin/accounts/create": { req: TODO; res: TODO };
|
|
"admin/ad/create": { req: TODO; res: TODO };
|
|
"admin/ad/delete": { req: { id: Ad["id"] }; res: null };
|
|
"admin/ad/list": { req: TODO; res: TODO };
|
|
"admin/ad/update": { req: TODO; res: TODO };
|
|
"admin/announcements/create": { req: TODO; res: TODO };
|
|
"admin/announcements/delete": { req: { id: Announcement["id"] }; res: null };
|
|
"admin/announcements/list": { req: TODO; res: TODO };
|
|
"admin/announcements/update": { req: TODO; res: TODO };
|
|
"admin/drive/clean-remote-files": { req: TODO; res: TODO };
|
|
"admin/drive/cleanup": { req: TODO; res: TODO };
|
|
"admin/drive/files": { req: TODO; res: TODO };
|
|
"admin/drive/show-file": { req: TODO; res: TODO };
|
|
"admin/emoji/add": { req: TODO; res: TODO };
|
|
"admin/emoji/copy": { req: TODO; res: TODO };
|
|
"admin/emoji/list-remote": { req: TODO; res: TODO };
|
|
"admin/emoji/list": { req: TODO; res: TODO };
|
|
"admin/emoji/remove": { req: TODO; res: TODO };
|
|
"admin/emoji/update": { req: TODO; res: TODO };
|
|
"admin/federation/delete-all-files": { req: { host: string }; res: null };
|
|
"admin/federation/refresh-remote-instance-metadata": { req: TODO; res: TODO };
|
|
"admin/federation/remove-all-following": { req: TODO; res: TODO };
|
|
"admin/federation/update-instance": { req: TODO; res: TODO };
|
|
"admin/moderators/add": { req: TODO; res: TODO };
|
|
"admin/moderators/remove": { req: TODO; res: TODO };
|
|
"admin/promo/create": { req: TODO; res: TODO };
|
|
"admin/queue/clear": { req: TODO; res: TODO };
|
|
"admin/queue/deliver-delayed": { req: TODO; res: TODO };
|
|
"admin/queue/inbox-delayed": { req: TODO; res: TODO };
|
|
"admin/queue/jobs": { req: TODO; res: TODO };
|
|
"admin/queue/stats": { req: TODO; res: TODO };
|
|
"admin/relays/add": { req: TODO; res: TODO };
|
|
"admin/relays/list": { req: TODO; res: TODO };
|
|
"admin/relays/remove": { req: TODO; res: TODO };
|
|
|
|
// announcements
|
|
announcements: {
|
|
req: {
|
|
limit?: number;
|
|
withUnreads?: boolean;
|
|
sinceId?: Announcement["id"];
|
|
untilId?: Announcement["id"];
|
|
};
|
|
res: Announcement[];
|
|
};
|
|
|
|
// antennas
|
|
"antennas/create": { req: TODO; res: Antenna };
|
|
"antennas/delete": { req: { antennaId: Antenna["id"] }; res: null };
|
|
"antennas/list": { req: NoParams; res: Antenna[] };
|
|
"antennas/notes": {
|
|
req: {
|
|
antennaId: Antenna["id"];
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
};
|
|
res: Note[];
|
|
};
|
|
"antennas/show": { req: { antennaId: Antenna["id"] }; res: Antenna };
|
|
"antennas/update": { req: TODO; res: Antenna };
|
|
"antennas/mark-read": { req: TODO; res: Antenna };
|
|
|
|
// ap
|
|
"ap/get": { req: { uri: string }; res: Record<string, any> };
|
|
"ap/show": {
|
|
req: { uri: string };
|
|
res:
|
|
| {
|
|
type: "Note";
|
|
object: Note;
|
|
}
|
|
| {
|
|
type: "User";
|
|
object: UserDetailed;
|
|
};
|
|
};
|
|
|
|
// app
|
|
"app/create": { req: TODO; res: App };
|
|
"app/show": { req: { appId: App["id"] }; res: App };
|
|
|
|
// auth
|
|
"auth/accept": { req: { token: string }; res: null };
|
|
"auth/session/generate": {
|
|
req: { appSecret: string };
|
|
res: { token: string; url: string };
|
|
};
|
|
"auth/session/show": { req: { token: string }; res: AuthSession };
|
|
"auth/session/userkey": {
|
|
req: { appSecret: string; token: string };
|
|
res: { accessToken: string; user: User };
|
|
};
|
|
|
|
// blocking
|
|
"blocking/create": { req: { userId: User["id"] }; res: UserDetailed };
|
|
"blocking/delete": { req: { userId: User["id"] }; res: UserDetailed };
|
|
"blocking/list": {
|
|
req: { limit?: number; sinceId?: Blocking["id"]; untilId?: Blocking["id"] };
|
|
res: Blocking[];
|
|
};
|
|
|
|
// channels
|
|
"channels/create": { req: TODO; res: TODO };
|
|
"channels/featured": { req: TODO; res: TODO };
|
|
"channels/follow": { req: TODO; res: TODO };
|
|
"channels/followed": { req: TODO; res: TODO };
|
|
"channels/owned": { req: TODO; res: TODO };
|
|
"channels/pin-note": { req: TODO; res: TODO };
|
|
"channels/show": { req: TODO; res: TODO };
|
|
"channels/timeline": { req: TODO; res: TODO };
|
|
"channels/unfollow": { req: TODO; res: TODO };
|
|
"channels/update": { req: TODO; res: TODO };
|
|
|
|
// charts
|
|
"charts/active-users": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: {
|
|
local: {
|
|
users: number[];
|
|
};
|
|
remote: {
|
|
users: number[];
|
|
};
|
|
};
|
|
};
|
|
"charts/drive": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: {
|
|
local: {
|
|
decCount: number[];
|
|
decSize: number[];
|
|
incCount: number[];
|
|
incSize: number[];
|
|
totalCount: number[];
|
|
totalSize: number[];
|
|
};
|
|
remote: {
|
|
decCount: number[];
|
|
decSize: number[];
|
|
incCount: number[];
|
|
incSize: number[];
|
|
totalCount: number[];
|
|
totalSize: number[];
|
|
};
|
|
};
|
|
};
|
|
"charts/federation": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: {
|
|
instance: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
};
|
|
};
|
|
"charts/hashtag": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: TODO;
|
|
};
|
|
"charts/instance": {
|
|
req: {
|
|
span: "day" | "hour";
|
|
limit?: number;
|
|
offset?: number | null;
|
|
host: string;
|
|
};
|
|
res: {
|
|
drive: {
|
|
decFiles: number[];
|
|
decUsage: number[];
|
|
incFiles: number[];
|
|
incUsage: number[];
|
|
totalFiles: number[];
|
|
totalUsage: number[];
|
|
};
|
|
followers: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
following: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
notes: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
diffs: {
|
|
normal: number[];
|
|
renote: number[];
|
|
reply: number[];
|
|
};
|
|
};
|
|
requests: {
|
|
failed: number[];
|
|
received: number[];
|
|
succeeded: number[];
|
|
};
|
|
users: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
};
|
|
};
|
|
"charts/network": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: TODO;
|
|
};
|
|
"charts/notes": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: {
|
|
local: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
diffs: {
|
|
normal: number[];
|
|
renote: number[];
|
|
reply: number[];
|
|
};
|
|
};
|
|
remote: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
diffs: {
|
|
normal: number[];
|
|
renote: number[];
|
|
reply: number[];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
"charts/user/drive": {
|
|
req: {
|
|
span: "day" | "hour";
|
|
limit?: number;
|
|
offset?: number | null;
|
|
userId: User["id"];
|
|
};
|
|
res: {
|
|
decCount: number[];
|
|
decSize: number[];
|
|
incCount: number[];
|
|
incSize: number[];
|
|
totalCount: number[];
|
|
totalSize: number[];
|
|
};
|
|
};
|
|
"charts/user/following": {
|
|
req: {
|
|
span: "day" | "hour";
|
|
limit?: number;
|
|
offset?: number | null;
|
|
userId: User["id"];
|
|
};
|
|
res: TODO;
|
|
};
|
|
"charts/user/notes": {
|
|
req: {
|
|
span: "day" | "hour";
|
|
limit?: number;
|
|
offset?: number | null;
|
|
userId: User["id"];
|
|
};
|
|
res: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
diffs: {
|
|
normal: number[];
|
|
renote: number[];
|
|
reply: number[];
|
|
};
|
|
};
|
|
};
|
|
"charts/user/reactions": {
|
|
req: {
|
|
span: "day" | "hour";
|
|
limit?: number;
|
|
offset?: number | null;
|
|
userId: User["id"];
|
|
};
|
|
res: TODO;
|
|
};
|
|
"charts/users": {
|
|
req: { span: "day" | "hour"; limit?: number; offset?: number | null };
|
|
res: {
|
|
local: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
remote: {
|
|
dec: number[];
|
|
inc: number[];
|
|
total: number[];
|
|
};
|
|
};
|
|
};
|
|
|
|
// clips
|
|
"clips/add-note": { req: TODO; res: TODO };
|
|
"clips/create": { req: TODO; res: TODO };
|
|
"clips/delete": { req: { clipId: Clip["id"] }; res: null };
|
|
"clips/list": { req: TODO; res: TODO };
|
|
"clips/notes": { req: TODO; res: TODO };
|
|
"clips/show": { req: TODO; res: TODO };
|
|
"clips/update": { req: TODO; res: TODO };
|
|
|
|
// drive
|
|
drive: { req: NoParams; res: { capacity: number; usage: number } };
|
|
"drive/files": {
|
|
req: {
|
|
folderId?: DriveFolder["id"] | null;
|
|
type?: DriveFile["type"] | null;
|
|
limit?: number;
|
|
sinceId?: DriveFile["id"];
|
|
untilId?: DriveFile["id"];
|
|
};
|
|
res: DriveFile[];
|
|
};
|
|
"drive/files/attached-notes": { req: TODO; res: TODO };
|
|
"drive/files/check-existence": { req: TODO; res: TODO };
|
|
"drive/files/create": { req: TODO; res: TODO };
|
|
"drive/files/delete": { req: { fileId: DriveFile["id"] }; res: null };
|
|
"drive/files/find-by-hash": { req: TODO; res: TODO };
|
|
"drive/files/find": {
|
|
req: { name: string; folderId?: DriveFolder["id"] | null };
|
|
res: DriveFile[];
|
|
};
|
|
"drive/files/show": {
|
|
req: { fileId?: DriveFile["id"]; url?: string };
|
|
res: DriveFile;
|
|
};
|
|
"drive/files/update": {
|
|
req: {
|
|
fileId: DriveFile["id"];
|
|
folderId?: DriveFolder["id"] | null;
|
|
name?: string;
|
|
isSensitive?: boolean;
|
|
comment?: string | null;
|
|
};
|
|
res: DriveFile;
|
|
};
|
|
"drive/files/upload-from-url": {
|
|
req: {
|
|
url: string;
|
|
folderId?: DriveFolder["id"] | null;
|
|
isSensitive?: boolean;
|
|
comment?: string | null;
|
|
marker?: string | null;
|
|
force?: boolean;
|
|
};
|
|
res: null;
|
|
};
|
|
"drive/folders": {
|
|
req: {
|
|
folderId?: DriveFolder["id"] | null;
|
|
limit?: number;
|
|
sinceId?: DriveFile["id"];
|
|
untilId?: DriveFile["id"];
|
|
};
|
|
res: DriveFolder[];
|
|
};
|
|
"drive/folders/create": {
|
|
req: { name?: string; parentId?: DriveFolder["id"] | null };
|
|
res: DriveFolder;
|
|
};
|
|
"drive/folders/delete": { req: { folderId: DriveFolder["id"] }; res: null };
|
|
"drive/folders/find": {
|
|
req: { name: string; parentId?: DriveFolder["id"] | null };
|
|
res: DriveFolder[];
|
|
};
|
|
"drive/folders/show": {
|
|
req: { folderId: DriveFolder["id"] };
|
|
res: DriveFolder;
|
|
};
|
|
"drive/folders/update": {
|
|
req: {
|
|
folderId: DriveFolder["id"];
|
|
name?: string;
|
|
parentId?: DriveFolder["id"] | null;
|
|
};
|
|
res: DriveFolder;
|
|
};
|
|
"drive/stream": {
|
|
req: {
|
|
type?: DriveFile["type"] | null;
|
|
limit?: number;
|
|
sinceId?: DriveFile["id"];
|
|
untilId?: DriveFile["id"];
|
|
};
|
|
res: DriveFile[];
|
|
};
|
|
|
|
// endpoint
|
|
endpoint: {
|
|
req: { endpoint: string };
|
|
res: { params: { name: string; type: string }[] };
|
|
};
|
|
|
|
// endpoints
|
|
endpoints: { req: NoParams; res: string[] };
|
|
|
|
// federation
|
|
"federation/dns": {
|
|
req: { host: string };
|
|
res: {
|
|
a: string[];
|
|
aaaa: string[];
|
|
cname: string[];
|
|
txt: string[];
|
|
};
|
|
};
|
|
"federation/followers": {
|
|
req: {
|
|
host: string;
|
|
limit?: number;
|
|
sinceId?: Following["id"];
|
|
untilId?: Following["id"];
|
|
};
|
|
res: FollowingFolloweePopulated[];
|
|
};
|
|
"federation/following": {
|
|
req: {
|
|
host: string;
|
|
limit?: number;
|
|
sinceId?: Following["id"];
|
|
untilId?: Following["id"];
|
|
};
|
|
res: FollowingFolloweePopulated[];
|
|
};
|
|
"federation/instances": {
|
|
req: {
|
|
host?: string | null;
|
|
blocked?: boolean | null;
|
|
notResponding?: boolean | null;
|
|
suspended?: boolean | null;
|
|
federating?: boolean | null;
|
|
subscribing?: boolean | null;
|
|
publishing?: boolean | null;
|
|
limit?: number;
|
|
offset?: number;
|
|
sort?:
|
|
| "+pubSub"
|
|
| "-pubSub"
|
|
| "+notes"
|
|
| "-notes"
|
|
| "+users"
|
|
| "-users"
|
|
| "+following"
|
|
| "-following"
|
|
| "+followers"
|
|
| "-followers"
|
|
| "+caughtAt"
|
|
| "-caughtAt"
|
|
| "+lastCommunicatedAt"
|
|
| "-lastCommunicatedAt"
|
|
| "+driveUsage"
|
|
| "-driveUsage"
|
|
| "+driveFiles"
|
|
| "-driveFiles";
|
|
};
|
|
res: Instance[];
|
|
};
|
|
"federation/show-instance": { req: { host: string }; res: Instance };
|
|
"federation/update-remote-user": { req: { userId: User["id"] }; res: null };
|
|
"federation/users": {
|
|
req: {
|
|
host: string;
|
|
limit?: number;
|
|
sinceId?: User["id"];
|
|
untilId?: User["id"];
|
|
};
|
|
res: UserDetailed[];
|
|
};
|
|
|
|
// following
|
|
"following/create": { req: { userId: User["id"] }; res: User };
|
|
"following/delete": { req: { userId: User["id"] }; res: User };
|
|
"following/requests/accept": { req: { userId: User["id"] }; res: null };
|
|
"following/requests/cancel": { req: { userId: User["id"] }; res: User };
|
|
"following/requests/list": { req: NoParams; res: FollowRequest[] };
|
|
"following/requests/reject": { req: { userId: User["id"] }; res: null };
|
|
|
|
// gallery
|
|
"gallery/featured": { req: TODO; res: TODO };
|
|
"gallery/popular": { req: TODO; res: TODO };
|
|
"gallery/posts": { req: TODO; res: TODO };
|
|
"gallery/posts/create": { req: TODO; res: TODO };
|
|
"gallery/posts/delete": { req: { postId: GalleryPost["id"] }; res: null };
|
|
"gallery/posts/like": { req: TODO; res: TODO };
|
|
"gallery/posts/show": { req: TODO; res: TODO };
|
|
"gallery/posts/unlike": { req: TODO; res: TODO };
|
|
"gallery/posts/update": { req: TODO; res: TODO };
|
|
|
|
// games
|
|
"games/reversi/games": { req: TODO; res: TODO };
|
|
"games/reversi/games/show": { req: TODO; res: TODO };
|
|
"games/reversi/games/surrender": { req: TODO; res: TODO };
|
|
"games/reversi/invitations": { req: TODO; res: TODO };
|
|
"games/reversi/match": { req: TODO; res: TODO };
|
|
"games/reversi/match/cancel": { req: TODO; res: TODO };
|
|
|
|
// get-online-users-count
|
|
"get-online-users-count": { req: NoParams; res: { count: number } };
|
|
|
|
// hashtags
|
|
"hashtags/list": { req: TODO; res: TODO };
|
|
"hashtags/search": { req: TODO; res: TODO };
|
|
"hashtags/show": { req: TODO; res: TODO };
|
|
"hashtags/trend": { req: TODO; res: TODO };
|
|
"hashtags/users": { req: TODO; res: TODO };
|
|
|
|
// i
|
|
i: { req: NoParams; res: User };
|
|
"i/apps": { req: TODO; res: TODO };
|
|
"i/authorized-apps": { req: TODO; res: TODO };
|
|
"i/change-password": { req: TODO; res: TODO };
|
|
"i/delete-account": { req: { password: string }; res: null };
|
|
"i/export-blocking": { req: TODO; res: TODO };
|
|
"i/export-following": { req: TODO; res: TODO };
|
|
"i/export-mute": { req: TODO; res: TODO };
|
|
"i/export-notes": { req: TODO; res: TODO };
|
|
"i/export-user-lists": { req: TODO; res: TODO };
|
|
"i/favorites": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: NoteFavorite["id"];
|
|
untilId?: NoteFavorite["id"];
|
|
};
|
|
res: NoteFavorite[];
|
|
};
|
|
"i/gallery/likes": { req: TODO; res: TODO };
|
|
"i/gallery/posts": { req: TODO; res: TODO };
|
|
"i/get-word-muted-notes-count": { req: TODO; res: TODO };
|
|
"i/import-following": { req: TODO; res: TODO };
|
|
"i/import-user-lists": { req: TODO; res: TODO };
|
|
"i/move": { req: TODO; res: TODO };
|
|
"i/known-as": { req: TODO; res: TODO };
|
|
"i/notifications": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Notification["id"];
|
|
untilId?: Notification["id"];
|
|
following?: boolean;
|
|
markAsRead?: boolean;
|
|
includeTypes?: Notification["type"][];
|
|
excludeTypes?: Notification["type"][];
|
|
};
|
|
res: Notification[];
|
|
};
|
|
"i/page-likes": { req: TODO; res: TODO };
|
|
"i/pages": { req: TODO; res: TODO };
|
|
"i/pin": { req: { noteId: Note["id"] }; res: MeDetailed };
|
|
"i/read-all-messaging-messages": { req: TODO; res: TODO };
|
|
"i/read-all-unread-notes": { req: TODO; res: TODO };
|
|
"i/read-announcement": { req: TODO; res: TODO };
|
|
"i/regenerate-token": { req: { password: string }; res: null };
|
|
"i/registry/get-all": { req: { scope?: string[] }; res: Record<string, any> };
|
|
"i/registry/get-detail": {
|
|
req: { key: string; scope?: string[] };
|
|
res: { updatedAt: DateString; value: any };
|
|
};
|
|
"i/registry/get": { req: { key: string; scope?: string[] }; res: any };
|
|
"i/registry/keys-with-type": {
|
|
req: { scope?: string[] };
|
|
res: Record<
|
|
string,
|
|
"null" | "array" | "number" | "string" | "boolean" | "object"
|
|
>;
|
|
};
|
|
"i/registry/keys": { req: { scope?: string[] }; res: string[] };
|
|
"i/registry/remove": { req: { key: string; scope?: string[] }; res: null };
|
|
"i/registry/scopes": { req: NoParams; res: string[][] };
|
|
"i/registry/set": {
|
|
req: { key: string; value: any; scope?: string[] };
|
|
res: null;
|
|
};
|
|
"i/revoke-token": { req: TODO; res: TODO };
|
|
"i/signin-history": {
|
|
req: { limit?: number; sinceId?: Signin["id"]; untilId?: Signin["id"] };
|
|
res: Signin[];
|
|
};
|
|
"i/unpin": { req: { noteId: Note["id"] }; res: MeDetailed };
|
|
"i/update-email": {
|
|
req: {
|
|
password: string;
|
|
email?: string | null;
|
|
};
|
|
res: MeDetailed;
|
|
};
|
|
"i/update": {
|
|
req: {
|
|
name?: string | null;
|
|
description?: string | null;
|
|
lang?: string | null;
|
|
location?: string | null;
|
|
birthday?: string | null;
|
|
avatarId?: DriveFile["id"] | null;
|
|
bannerId?: DriveFile["id"] | null;
|
|
fields?: {
|
|
name: string;
|
|
value: string;
|
|
}[];
|
|
isLocked?: boolean;
|
|
isExplorable?: boolean;
|
|
hideOnlineStatus?: boolean;
|
|
carefulBot?: boolean;
|
|
autoAcceptFollowed?: boolean;
|
|
noCrawle?: boolean;
|
|
isBot?: boolean;
|
|
isCat?: boolean;
|
|
injectFeaturedNote?: boolean;
|
|
receiveAnnouncementEmail?: boolean;
|
|
alwaysMarkNsfw?: boolean;
|
|
mutedWords?: string[][];
|
|
mutingNotificationTypes?: Notification["type"][];
|
|
emailNotificationTypes?: string[];
|
|
};
|
|
res: MeDetailed;
|
|
};
|
|
"i/user-group-invites": { req: TODO; res: TODO };
|
|
"i/2fa/done": { req: TODO; res: TODO };
|
|
"i/2fa/key-done": { req: TODO; res: TODO };
|
|
"i/2fa/password-less": { req: TODO; res: TODO };
|
|
"i/2fa/register-key": { req: TODO; res: TODO };
|
|
"i/2fa/register": { req: TODO; res: TODO };
|
|
"i/2fa/remove-key": { req: TODO; res: TODO };
|
|
"i/2fa/unregister": { req: TODO; res: TODO };
|
|
|
|
// messaging
|
|
"messaging/history": {
|
|
req: { limit?: number; group?: boolean };
|
|
res: MessagingMessage[];
|
|
};
|
|
"messaging/messages": {
|
|
req: {
|
|
userId?: User["id"];
|
|
groupId?: UserGroup["id"];
|
|
limit?: number;
|
|
sinceId?: MessagingMessage["id"];
|
|
untilId?: MessagingMessage["id"];
|
|
markAsRead?: boolean;
|
|
};
|
|
res: MessagingMessage[];
|
|
};
|
|
"messaging/messages/create": {
|
|
req: {
|
|
userId?: User["id"];
|
|
groupId?: UserGroup["id"];
|
|
text?: string;
|
|
fileId?: DriveFile["id"];
|
|
};
|
|
res: MessagingMessage;
|
|
};
|
|
"messaging/messages/delete": {
|
|
req: { messageId: MessagingMessage["id"] };
|
|
res: null;
|
|
};
|
|
"messaging/messages/read": {
|
|
req: { messageId: MessagingMessage["id"] };
|
|
res: null;
|
|
};
|
|
|
|
// meta
|
|
meta: {
|
|
req: { detail?: boolean };
|
|
res: {
|
|
$switch: {
|
|
$cases: [
|
|
[{ detail: true }, DetailedInstanceMetadata],
|
|
[{ detail: false }, LiteInstanceMetadata],
|
|
[
|
|
{ detail: boolean },
|
|
LiteInstanceMetadata | DetailedInstanceMetadata,
|
|
],
|
|
];
|
|
$default: LiteInstanceMetadata;
|
|
};
|
|
};
|
|
};
|
|
|
|
// miauth
|
|
"miauth/gen-token": { req: TODO; res: TODO };
|
|
|
|
// mute
|
|
"mute/create": { req: TODO; res: TODO };
|
|
"mute/delete": { req: { userId: User["id"] }; res: null };
|
|
"mute/list": { req: TODO; res: TODO };
|
|
|
|
// my
|
|
"my/apps": { req: TODO; res: TODO };
|
|
|
|
// notes
|
|
notes: {
|
|
req: { limit?: number; sinceId?: Note["id"]; untilId?: Note["id"] };
|
|
res: Note[];
|
|
};
|
|
"notes/children": {
|
|
req: {
|
|
noteId: Note["id"];
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/clips": { req: TODO; res: TODO };
|
|
"notes/conversation": { req: TODO; res: TODO };
|
|
"notes/create": {
|
|
req: {
|
|
visibility?: "public" | "home" | "followers" | "specified";
|
|
visibleUserIds?: User["id"][];
|
|
text?: null | string;
|
|
cw?: null | string;
|
|
viaMobile?: boolean;
|
|
localOnly?: boolean;
|
|
fileIds?: DriveFile["id"][];
|
|
replyId?: null | Note["id"];
|
|
renoteId?: null | Note["id"];
|
|
channelId?: null | Channel["id"];
|
|
poll?: null | {
|
|
choices: string[];
|
|
multiple?: boolean;
|
|
expiresAt?: null | number;
|
|
expiredAfter?: null | number;
|
|
};
|
|
};
|
|
res: { createdNote: Note };
|
|
};
|
|
"notes/delete": { req: { noteId: Note["id"] }; res: null };
|
|
"notes/favorites/create": { req: { noteId: Note["id"] }; res: null };
|
|
"notes/favorites/delete": { req: { noteId: Note["id"] }; res: null };
|
|
"notes/featured": { req: TODO; res: Note[] };
|
|
"notes/global-timeline": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/recommended-timeline": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/hybrid-timeline": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/local-timeline": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/mentions": {
|
|
req: {
|
|
following?: boolean;
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/polls/recommendation": { req: TODO; res: TODO };
|
|
"notes/polls/vote": {
|
|
req: { noteId: Note["id"]; choice: number };
|
|
res: null;
|
|
};
|
|
"notes/reactions": {
|
|
req: { noteId: Note["id"]; type?: string | null; limit?: number };
|
|
res: NoteReaction[];
|
|
};
|
|
"notes/reactions/create": {
|
|
req: { noteId: Note["id"]; reaction: string };
|
|
res: null;
|
|
};
|
|
"notes/reactions/delete": { req: { noteId: Note["id"] }; res: null };
|
|
"notes/renotes": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
noteId: Note["id"];
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/replies": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
noteId: Note["id"];
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/search-by-tag": { req: TODO; res: TODO };
|
|
"notes/search": { req: TODO; res: TODO };
|
|
"notes/show": { req: { noteId: Note["id"] }; res: Note };
|
|
"notes/state": { req: TODO; res: TODO };
|
|
"notes/timeline": {
|
|
req: {
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/unrenote": { req: { noteId: Note["id"] }; res: null };
|
|
"notes/user-list-timeline": {
|
|
req: {
|
|
listId: UserList["id"];
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"notes/watching/create": { req: TODO; res: TODO };
|
|
"notes/watching/delete": { req: { noteId: Note["id"] }; res: null };
|
|
|
|
// notifications
|
|
"notifications/create": {
|
|
req: { body: string; header?: string | null; icon?: string | null };
|
|
res: null;
|
|
};
|
|
"notifications/mark-all-as-read": { req: NoParams; res: null };
|
|
"notifications/read": {
|
|
req: { notificationId: Notification["id"] };
|
|
res: null;
|
|
};
|
|
|
|
// page-push
|
|
"page-push": {
|
|
req: { pageId: Page["id"]; event: string; var?: any };
|
|
res: null;
|
|
};
|
|
|
|
// pages
|
|
"pages/create": { req: TODO; res: Page };
|
|
"pages/delete": { req: { pageId: Page["id"] }; res: null };
|
|
"pages/featured": { req: NoParams; res: Page[] };
|
|
"pages/like": { req: { pageId: Page["id"] }; res: null };
|
|
"pages/show": {
|
|
req: { pageId?: Page["id"]; name?: string; username?: string };
|
|
res: Page;
|
|
};
|
|
"pages/unlike": { req: { pageId: Page["id"] }; res: null };
|
|
"pages/update": { req: TODO; res: null };
|
|
|
|
// ping
|
|
ping: { req: NoParams; res: { pong: number } };
|
|
|
|
// pinned-users
|
|
"pinned-users": { req: TODO; res: TODO };
|
|
|
|
// promo
|
|
"promo/read": { req: TODO; res: TODO };
|
|
|
|
// request-reset-password
|
|
"request-reset-password": {
|
|
req: { username: string; email: string };
|
|
res: null;
|
|
};
|
|
|
|
// reset-password
|
|
"reset-password": { req: { token: string; password: string }; res: null };
|
|
|
|
// room
|
|
"room/show": { req: TODO; res: TODO };
|
|
"room/update": { req: TODO; res: TODO };
|
|
|
|
// stats
|
|
stats: { req: NoParams; res: Stats };
|
|
|
|
// server-info
|
|
"server-info": { req: NoParams; res: ServerInfo };
|
|
|
|
// ck specific
|
|
"latest-version": { req: NoParams; res: TODO };
|
|
|
|
// sw
|
|
"sw/register": { req: TODO; res: TODO };
|
|
|
|
// username
|
|
"username/available": {
|
|
req: { username: string };
|
|
res: { available: boolean };
|
|
};
|
|
|
|
// users
|
|
users: {
|
|
req: {
|
|
limit?: number;
|
|
offset?: number;
|
|
sort?: UserSorting;
|
|
origin?: OriginType;
|
|
};
|
|
res: User[];
|
|
};
|
|
"users/clips": { req: TODO; res: TODO };
|
|
"users/followers": {
|
|
req: {
|
|
userId?: User["id"];
|
|
username?: User["username"];
|
|
host?: User["host"] | null;
|
|
limit?: number;
|
|
sinceId?: Following["id"];
|
|
untilId?: Following["id"];
|
|
};
|
|
res: FollowingFollowerPopulated[];
|
|
};
|
|
"users/following": {
|
|
req: {
|
|
userId?: User["id"];
|
|
username?: User["username"];
|
|
host?: User["host"] | null;
|
|
limit?: number;
|
|
sinceId?: Following["id"];
|
|
untilId?: Following["id"];
|
|
};
|
|
res: FollowingFolloweePopulated[];
|
|
};
|
|
"users/gallery/posts": { req: TODO; res: TODO };
|
|
"users/get-frequently-replied-users": { req: TODO; res: TODO };
|
|
"users/groups/create": { req: TODO; res: TODO };
|
|
"users/groups/delete": { req: { groupId: UserGroup["id"] }; res: null };
|
|
"users/groups/invitations/accept": { req: TODO; res: TODO };
|
|
"users/groups/invitations/reject": { req: TODO; res: TODO };
|
|
"users/groups/invite": { req: TODO; res: TODO };
|
|
"users/groups/joined": { req: TODO; res: TODO };
|
|
"users/groups/owned": { req: TODO; res: TODO };
|
|
"users/groups/pull": { req: TODO; res: TODO };
|
|
"users/groups/show": { req: TODO; res: TODO };
|
|
"users/groups/transfer": { req: TODO; res: TODO };
|
|
"users/groups/update": { req: TODO; res: TODO };
|
|
"users/lists/create": { req: { name: string }; res: UserList };
|
|
"users/lists/delete": { req: { listId: UserList["id"] }; res: null };
|
|
"users/lists/list": { req: NoParams; res: UserList[] };
|
|
"users/lists/pull": {
|
|
req: { listId: UserList["id"]; userId: User["id"] };
|
|
res: null;
|
|
};
|
|
"users/lists/push": {
|
|
req: { listId: UserList["id"]; userId: User["id"] };
|
|
res: null;
|
|
};
|
|
"users/lists/show": { req: { listId: UserList["id"] }; res: UserList };
|
|
"users/lists/update": {
|
|
req: { listId: UserList["id"]; name: string };
|
|
res: UserList;
|
|
};
|
|
"users/notes": {
|
|
req: {
|
|
userId: User["id"];
|
|
limit?: number;
|
|
sinceId?: Note["id"];
|
|
untilId?: Note["id"];
|
|
sinceDate?: number;
|
|
untilDate?: number;
|
|
};
|
|
res: Note[];
|
|
};
|
|
"users/pages": { req: TODO; res: TODO };
|
|
"users/recommendation": { req: TODO; res: TODO };
|
|
"users/relation": { req: TODO; res: TODO };
|
|
"users/report-abuse": { req: TODO; res: TODO };
|
|
"users/search-by-username-and-host": { req: TODO; res: TODO };
|
|
"users/search": { req: TODO; res: TODO };
|
|
"users/show": {
|
|
req: ShowUserReq | { userIds: User["id"][] };
|
|
res: {
|
|
$switch: {
|
|
$cases: [[{ userIds: User["id"][] }, UserDetailed[]]];
|
|
$default: UserDetailed;
|
|
};
|
|
};
|
|
};
|
|
"users/stats": { req: TODO; res: TODO };
|
|
};
|