Add endpoints (#7)

* Add endpoints

* endpoint

* endpoint: stats

* endpoint
* reset-password
* server-info

* endpoint
* announcements
* drive
* page-push

* page endpoint

* page id
This commit is contained in:
marihachi 2021-05-15 14:25:18 +09:00 committed by GitHub
parent e43a8bf88a
commit 148730dac3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 149 additions and 2 deletions

View file

@ -1,8 +1,105 @@
import { Instance, User } from './types'; import { ID, Instance, Note, OriginType, Page, ServerInfo, Stats, User, UserSorting } from './types';
type TODO = Record<string, any>; type TODO = Record<string, any>;
type ShowUserReq = { username: string; host?: string; } | { userId: ID; };
export type Endpoints = { export type Endpoints = {
// admin
// announcements
'announcements': { req: { limit?: number; withUnreads?: boolean; sinceId?: ID; untilId?: ID; }; res: TODO; };
// antennas
'antennas/create': { req: TODO; res: TODO; };
// ap
// app
// auth
// blocking
// channnels
// charts
// clips
// drive
'drive': { req: null; res: { capacity: number; usage: number; }; };
// federation
// following
// gallery
// games
// get-online-users-count
// hashtags
// i
'i': { req: TODO; res: User; }; 'i': { req: TODO; res: User; };
// messaging
// meta
'meta': { req: { detail?: boolean; }; res: Instance; }; 'meta': { req: { detail?: boolean; }; res: Instance; };
// miauth
// mute
// my
// notes
'notes': { req: { limit?: number; sinceId?: ID; untilId?: ID; }; res: Note[]; };
'notes/create': { req: TODO; res: { createdNote: Note }; };
'notes/delete': { req: { noteId: ID; }; res: null; };
'notes/show': { req: { noteId: ID; }; res: Note; };
// notifications
// page-push
'page-push': { req: { pageId: ID; event: string; var?: any; }; res: null; };
// pages
'pages/create': { req: TODO; res: Page; };
'pages/delete': { req: { pageId: ID; }; res: null; };
'pages/featured': { req: null; res: Page[]; };
'pages/like': { req: { pageId: ID; }; res: null; };
'pages/show': { req: { pageId?: ID; name?: string; username?: string; }; res: Page; };
'pages/unlike': { req: { pageId: ID; }; res: null; };
'pages/update': { req: TODO; res: null; };
// ping
// pinned-users
// promo
// request-reset-password
// reset-password
'reset-password': { req: { token: string; password: string; }; res: null; };
// room
// stats
'stats': { req: null; res: Stats; };
// server-info
'server-info': { req: null; res: ServerInfo; };
// sw
// username
// users
'users': { req: { limit?: number; offset?: number; sort?: UserSorting; origin?: OriginType; }; res: User[]; };
'users/show': { req: ShowUserReq; res: User; } | { req: { userIds: ID[]; }; res: User[]; };
}; };

View file

@ -1,4 +1,4 @@
type ID = string; export type ID = string;
export type User = { export type User = {
id: ID; id: ID;
@ -71,3 +71,53 @@ export type Instance = {
imageUrl: string; imageUrl: string;
}[]; }[];
}; };
export type ServerInfo = {
machine: string;
cpu: {
model: string;
cores: number;
};
mem: {
total: number;
};
fs: {
total: number;
used: number;
};
};
export type Stats = {
notesCount: number;
originalNotesCount: number;
usersCount: number;
originalUsersCount: number;
instances: number;
driveUsageLocal: number;
driveUsageRemote: number;
};
export type Page = {
id: ID;
createdAt: Date;
updatedAt: Date;
userId: User['id'];
user: User;
content: Record<string, any>[];
variables: Record<string, any>[];
title: string;
name: string;
summary: string | null;
hideTitleWhenPinned: boolean;
alignCenter: boolean;
font: string;
script: string;
eyeCatchingImageId: DriveFile['id'] | null;
eyeCatchingImage: DriveFile | null;
attachedFiles: any;
likedCount: number;
isLiked?: boolean;
};
export type UserSorting = '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt';
export type OriginType = 'combined' | 'local' | 'remote';