122 lines
2.5 KiB
TypeScript
122 lines
2.5 KiB
TypeScript
// See app/serializers/rest/status_serializer.rb
|
|
|
|
import type { ApiAccountJSON } from './accounts';
|
|
import type { ApiCustomEmojiJSON } from './custom_emoji';
|
|
import type { ApiMediaAttachmentJSON } from './media_attachments';
|
|
import type { ApiPollJSON } from './polls';
|
|
|
|
// See app/modals/status.rb
|
|
export type StatusVisibility =
|
|
| 'public'
|
|
| 'unlisted'
|
|
| 'private'
|
|
// | 'limited' // This is never exposed to the API (they become `private`)
|
|
| 'direct';
|
|
|
|
export interface ApiStatusApplicationJSON {
|
|
name: string;
|
|
website: string;
|
|
}
|
|
|
|
export interface ApiTagJSON {
|
|
name: string;
|
|
url: string;
|
|
}
|
|
|
|
export interface ApiMentionJSON {
|
|
id: string;
|
|
username: string;
|
|
url: string;
|
|
acct: string;
|
|
}
|
|
|
|
export interface ApiPreviewCardAuthorJSON {
|
|
name: string;
|
|
url: string;
|
|
account?: ApiAccountJSON;
|
|
}
|
|
|
|
export interface ApiPreviewCardJSON {
|
|
url: string;
|
|
title: string;
|
|
description: string;
|
|
language: string;
|
|
type: string;
|
|
author_name: string;
|
|
author_url: string;
|
|
author_account?: ApiAccountJSON;
|
|
provider_name: string;
|
|
provider_url: string;
|
|
html: string;
|
|
width: number;
|
|
height: number;
|
|
image: string;
|
|
image_description: string;
|
|
embed_url: string;
|
|
blurhash: string;
|
|
published_at: string;
|
|
authors: ApiPreviewCardAuthorJSON[];
|
|
}
|
|
|
|
export type FilterContext =
|
|
| 'home'
|
|
| 'notifications'
|
|
| 'public'
|
|
| 'thread'
|
|
| 'account';
|
|
|
|
export interface ApiFilterJSON {
|
|
id: string;
|
|
title: string;
|
|
context: FilterContext;
|
|
expires_at: string;
|
|
filter_action: 'warn' | 'hide';
|
|
keywords?: unknown[]; // TODO: FilterKeywordSerializer
|
|
statuses?: unknown[]; // TODO: FilterStatusSerializer
|
|
}
|
|
|
|
export interface ApiFilterResultJSON {
|
|
filter: ApiFilterJSON;
|
|
keyword_matches: string[];
|
|
status_matches: string[];
|
|
}
|
|
|
|
export interface ApiStatusJSON {
|
|
id: string;
|
|
created_at: string;
|
|
in_reply_to_id?: string;
|
|
in_reply_to_account_id?: string;
|
|
sensitive: boolean;
|
|
spoiler_text?: string;
|
|
visibility: StatusVisibility;
|
|
language: string;
|
|
uri: string;
|
|
url: string;
|
|
replies_count: number;
|
|
reblogs_count: number;
|
|
favorites_count: number;
|
|
edited_at?: string;
|
|
|
|
favorited?: boolean;
|
|
reblogged?: boolean;
|
|
muted?: boolean;
|
|
bookmarked?: boolean;
|
|
pinned?: boolean;
|
|
|
|
filtered?: ApiFilterResultJSON[];
|
|
content?: string;
|
|
text?: string;
|
|
|
|
reblog?: ApiStatusJSON;
|
|
application?: ApiStatusApplicationJSON;
|
|
account: ApiAccountJSON;
|
|
media_attachments: ApiMediaAttachmentJSON[];
|
|
mentions: ApiMentionJSON[];
|
|
|
|
tags: ApiTagJSON[];
|
|
emojis: ApiCustomEmojiJSON[];
|
|
|
|
card?: ApiPreviewCardJSON;
|
|
poll?: ApiPollJSON;
|
|
}
|