export interface MeUser extends User { discord: string | null; discord_username: string | null; } export interface User { id: string; username: string; display_name: string | null; bio: string | null; avatar_urls: string[] | null; links: string[] | null; members: PartialMember[]; names: Name[]; pronouns: Pronoun[]; fields: Field[]; } export interface PartialMember { id: string; name: string; display_name: string | null; avatar_urls: string[] | null; } export interface Member extends PartialMember { bio: string | null; links: string[] | null; id: string; display_name: string | null; name: string; avatar_urls: string[] | null; names: Name[]; pronouns: Pronoun[]; fields: Field[]; user?: PartialUser; } export interface Name { name: string; status: WordStatus; } export interface Pronoun { display_text?: string; pronouns: string; status: WordStatus; } export interface Field { name: string; favourite: string[] | null; okay: string[] | null; jokingly: string[] | null; friends_only: string[] | null; avoid: string[] | null; } export interface APIError { code: ErrorCode; message?: string; details?: string; } export enum WordStatus { Favourite = 1, Okay = 2, Jokingly = 3, FriendsOnly = 4, Avoid = 5, } export enum ErrorCode { BadRequest = 400, Forbidden = 403, NotFound = 404, MethodNotAllowed = 405, TooManyRequests = 429, InternalServerError = 500, InvalidState = 1001, InvalidOAuthCode = 1002, InvalidToken = 1003, InviteRequired = 1004, InvalidTicket = 1005, InvalidUsername = 1006, UsernameTaken = 1007, InvitesDisabled = 1008, InviteLimitReached = 1009, InviteAlreadyUsed = 1010, UserNotFound = 2001, MemberNotFound = 3001, MemberLimitReached = 3002, RequestTooBig = 4001, } export interface SignupRequest { username: string; ticket: string; invite_code?: string; } export interface SignupResponse { user: MeUser; token: string; } export interface PartialUser { id: string; username: string; display_name: string | null; avatar_urls: string[] | null; }