mirror of https://github.com/tooot-app/app
501 lines
9.4 KiB
TypeScript
501 lines
9.4 KiB
TypeScript
declare namespace Mastodon {
|
|
type Account = {
|
|
// Base
|
|
id: string
|
|
username: string
|
|
acct: string
|
|
url: string
|
|
|
|
// Attributes
|
|
display_name: string
|
|
note?: string
|
|
avatar: string
|
|
avatar_static: string
|
|
header: string
|
|
header_static: string
|
|
locked: boolean
|
|
emojis?: Emoji[]
|
|
discoverable: boolean
|
|
|
|
// Statistics
|
|
created_at: string
|
|
last_status_at: string
|
|
statuses_count: number
|
|
followers_count: number
|
|
following_count: number
|
|
|
|
// Others
|
|
moved?: Account
|
|
fields: Field[]
|
|
bot: boolean
|
|
source?: Source
|
|
}
|
|
|
|
type Announcement = {
|
|
// Base
|
|
id: string
|
|
content: string
|
|
all_day: boolean
|
|
published_at: string
|
|
updated_at: string
|
|
read: boolean
|
|
|
|
// Others
|
|
scheduled_at?: string
|
|
starts_at?: string
|
|
ends_at?: string
|
|
reactions?: AnnouncementReaction[]
|
|
mentions?: Mention[]
|
|
statuses?: Status[]
|
|
tags?: Tag[]
|
|
emojis?: Emoji[]
|
|
}
|
|
|
|
type AnnouncementReaction = {
|
|
// Base
|
|
name: string
|
|
count: number
|
|
me: boolean
|
|
url: string
|
|
static_url: string
|
|
}
|
|
|
|
type Application = {
|
|
// Base
|
|
name: string
|
|
website?: string
|
|
vapid_key?: string
|
|
}
|
|
|
|
type Apps = {
|
|
id: string
|
|
name: string
|
|
website?: string
|
|
redirect_uri: string
|
|
client_id: string
|
|
client_secret: string
|
|
vapid_key: string
|
|
}
|
|
|
|
type Attachment =
|
|
| AttachmentImage
|
|
| AttachmentVideo
|
|
| AttachmentGifv
|
|
| AttachmentAudio
|
|
| AttachmentUnknown
|
|
|
|
type AttachmentImage = {
|
|
// Base
|
|
id: string
|
|
type: 'image'
|
|
url: string
|
|
preview_url: string
|
|
|
|
// Others
|
|
remote_url?: string
|
|
text_url?: string
|
|
meta?: {
|
|
original?: { width: number; height: number; size: string; aspect: number }
|
|
small?: { width: number; height: number; size: string; aspect: number }
|
|
focus?: { x: number; y: number }
|
|
}
|
|
description?: string
|
|
blurhash?: string
|
|
}
|
|
|
|
type AttachmentVideo = {
|
|
// Base
|
|
id: string
|
|
type: 'video'
|
|
url: string
|
|
preview_url: string
|
|
|
|
// Others
|
|
remote_url?: string
|
|
text_url?: string
|
|
meta?: {
|
|
length: string
|
|
duration: number
|
|
fps: number
|
|
size: string
|
|
width: number
|
|
height: number
|
|
aspect: number
|
|
audio_encode: string
|
|
audio_bitrate: string
|
|
audio_channels: string
|
|
original: {
|
|
width: number
|
|
height: number
|
|
frame_rate: string
|
|
duration: number
|
|
bitrate: number
|
|
}
|
|
small: {
|
|
width: number
|
|
height: number
|
|
size: string
|
|
aspect: number
|
|
}
|
|
}
|
|
description?: string
|
|
blurhash?: string
|
|
}
|
|
|
|
type AttachmentGifv = {
|
|
// Base
|
|
id: string
|
|
type: 'gifv'
|
|
url: string
|
|
preview_url: string
|
|
|
|
// Others
|
|
remote_url?: string
|
|
text_url?: string
|
|
meta?: {
|
|
length: string
|
|
duration: number
|
|
fps: number
|
|
size: string
|
|
width: number
|
|
height: number
|
|
aspect: number
|
|
original: {
|
|
width: number
|
|
height: number
|
|
frame_rate: string
|
|
duration: number
|
|
bitrate: number
|
|
}
|
|
small: {
|
|
width: number
|
|
height: number
|
|
size: string
|
|
aspect: number
|
|
}
|
|
}
|
|
description?: string
|
|
blurhash?: string
|
|
}
|
|
|
|
type AttachmentAudio = {
|
|
// Base
|
|
id: string
|
|
type: 'audio'
|
|
url: string
|
|
preview_url: string
|
|
|
|
// Others
|
|
remote_url?: string
|
|
preview_remote_url?: string // undocumented
|
|
text_url?: string
|
|
meta: {
|
|
length: string
|
|
duration: number
|
|
audio_encode: string
|
|
audio_bitrate: string
|
|
audio_channels: string
|
|
original: {
|
|
duration: number
|
|
bitrate: number
|
|
}
|
|
}
|
|
description?: string
|
|
blurhash?: string
|
|
}
|
|
|
|
type AttachmentUnknown = {
|
|
// Base
|
|
id: string
|
|
type: 'unknown'
|
|
url: string
|
|
preview_url: string
|
|
|
|
// Others
|
|
remote_url?: string
|
|
text_url?: string
|
|
meta?: any
|
|
description?: string
|
|
blurhash?: string
|
|
}
|
|
|
|
type Card = {
|
|
// Base
|
|
url: string
|
|
title: string
|
|
description: string
|
|
type: 'link' | 'photo' | 'video' | 'rich'
|
|
|
|
// Attributes
|
|
author_name: string
|
|
author_url: string
|
|
provider_name: string
|
|
provider_url: string
|
|
html: string
|
|
width: number
|
|
height: number
|
|
image: string
|
|
embed_url: string
|
|
blurhash: string
|
|
}
|
|
|
|
type Conversation = {
|
|
id: string
|
|
accounts: Account[]
|
|
unread: boolean
|
|
last_status?: Status
|
|
}
|
|
|
|
type Emoji = {
|
|
// Base
|
|
shortcode: string
|
|
url: string
|
|
static_url: string
|
|
visible_in_picker: boolean
|
|
category?: string
|
|
}
|
|
|
|
type Field = {
|
|
name: string
|
|
value: string
|
|
verified_at: string | null
|
|
}
|
|
|
|
type Filter = {
|
|
id: string
|
|
phrase: string
|
|
context: ('home' | 'notifications' | 'public' | 'thread' | 'account')[]
|
|
expires_at?: string
|
|
irreversible: boolean
|
|
whole_word: boolean
|
|
}
|
|
|
|
type List = {
|
|
id: string
|
|
title: string
|
|
}
|
|
|
|
type Instance = {
|
|
// Base
|
|
uri: string
|
|
title: string
|
|
description: string
|
|
short_description: string
|
|
email: string
|
|
version: string
|
|
languages: string[]
|
|
registrations: boolean
|
|
approval_required: boolean
|
|
invites_enabled: boolean
|
|
urls: {
|
|
streaming_api: string
|
|
}
|
|
stats: {
|
|
user_count: number
|
|
status_count: number
|
|
domain_count: number
|
|
}
|
|
|
|
// Others
|
|
thumbnail?: string
|
|
contact_account?: Account
|
|
configuration?: {
|
|
statuses: {
|
|
max_characters: number
|
|
max_media_attachments: number
|
|
characters_reserved_per_url: number
|
|
}
|
|
media_attachments: {
|
|
supported_mime_types: string[]
|
|
image_size_limit: number
|
|
image_matrix_limit: number
|
|
video_size_limit: number
|
|
video_frame_rate_limit: number
|
|
video_matrix_limit: number
|
|
}
|
|
polls: {
|
|
max_options: number
|
|
max_characters_per_option: number
|
|
min_expiration: number
|
|
max_expiration: number
|
|
}
|
|
}
|
|
}
|
|
|
|
type Mention = {
|
|
// Base
|
|
id: string
|
|
username: string
|
|
acct: string
|
|
url: string
|
|
}
|
|
|
|
type Notification = {
|
|
// Base
|
|
id: string
|
|
type:
|
|
| 'follow'
|
|
| 'follow_request'
|
|
| 'mention'
|
|
| 'reblog'
|
|
| 'favourite'
|
|
| 'poll'
|
|
| 'status'
|
|
| 'update'
|
|
created_at: string
|
|
account: Account
|
|
|
|
// Others
|
|
status?: Status
|
|
}
|
|
|
|
type Poll = {
|
|
// Base
|
|
id: string
|
|
expires_at: string
|
|
expired: boolean
|
|
multiple: bool
|
|
votes_count: number
|
|
voters_count: number
|
|
voted?: boolean
|
|
own_votes?: number[]
|
|
options: { title: string; votes_count: number }[]
|
|
emojis: Emoji[]
|
|
}
|
|
|
|
type Preferences = {
|
|
'posting:default:visibility'?: 'public' | 'unlisted' | 'private' | 'direct'
|
|
'posting:default:sensitive'?: boolean
|
|
'posting:default:language'?: string
|
|
'reading:expand:media'?: 'default' | 'show_all' | 'hide_all'
|
|
'reading:expand:spoilers'?: boolean
|
|
}
|
|
|
|
type PushSubscription = {
|
|
id: string
|
|
endpoint: string
|
|
alerts: {
|
|
follow: boolean
|
|
follow_request: boolean
|
|
favourite: boolean
|
|
reblog: boolean
|
|
mention: boolean
|
|
poll: boolean
|
|
status: boolean
|
|
}
|
|
server_key: string
|
|
}
|
|
|
|
type Relationship = {
|
|
id: string
|
|
following: boolean
|
|
showing_reblogs: boolean
|
|
followed_by: boolean
|
|
blocking: boolean
|
|
blocked_by: boolean
|
|
muting: boolean
|
|
muting_notifications: boolean
|
|
requested: boolean
|
|
domain_blocking: boolean
|
|
endorsed: boolean
|
|
note: string
|
|
}
|
|
|
|
type Results = {
|
|
accounts?: Account[]
|
|
statuses?: Status[]
|
|
hashtags?: Tag[]
|
|
}
|
|
|
|
type Status = {
|
|
// Base
|
|
id: string
|
|
uri: string
|
|
created_at: string
|
|
account: Account
|
|
content: string
|
|
visibility: 'public' | 'unlisted' | 'private' | 'direct'
|
|
sensitive: boolean
|
|
spoiler_text?: string
|
|
media_attachments: Attachment[]
|
|
application: Application
|
|
|
|
// Attributes
|
|
mentions: Mention[]
|
|
tags: Tag[]
|
|
emojis: Emoji[]
|
|
|
|
// Interaction
|
|
reblogs_count: number
|
|
favourites_count: number
|
|
replies_count: number
|
|
edited_at?: string // FEATURE edit_post
|
|
favourited: boolean
|
|
reblogged: boolean
|
|
muted: boolean
|
|
bookmarked: boolean
|
|
pinned: boolean
|
|
|
|
// Others
|
|
url?: string
|
|
in_reply_to_id?: string
|
|
in_reply_to_account_id?: string
|
|
reblog?: Status
|
|
poll?: Poll
|
|
card?: Card
|
|
language?: string
|
|
text?: string
|
|
}
|
|
|
|
type StatusHistory = {
|
|
content: Status['content']
|
|
spoiler_text: Status['spoiler_text']
|
|
sensitive: Status['sensitive']
|
|
created_at: Status['created_at']
|
|
poll: Status['poll']
|
|
account: Status['account']
|
|
media_attachments: Status['media_attachments']
|
|
emojis: Status['emojis']
|
|
}
|
|
|
|
type Source = {
|
|
// Base
|
|
note: string
|
|
fields: Field[]
|
|
|
|
// Others
|
|
privacy?: 'public' | 'unlisted' | 'private' | 'direct'
|
|
sensitive?: boolean
|
|
language?: string
|
|
follow_requests_count?: number
|
|
}
|
|
|
|
type Tag = {
|
|
// Base
|
|
name: string
|
|
url: string
|
|
// history: types
|
|
}
|
|
|
|
type WebSocketStream =
|
|
| 'user'
|
|
| 'public'
|
|
| 'public:local'
|
|
| 'hashtag'
|
|
| 'hashtag:local'
|
|
| 'list'
|
|
| 'direct'
|
|
type WebSocket =
|
|
| {
|
|
stream: WebSocketStream[]
|
|
event: 'update'
|
|
payload: string // Status
|
|
}
|
|
| { stream: WebSocketStream[]; event: 'delete'; payload: Status['id'] }
|
|
| {
|
|
stream: WebSocketStream[]
|
|
event: 'notification'
|
|
payload: string // Notification
|
|
}
|
|
}
|