namespace PrivaPub.Api.Mastodon.Entities { public class Account { public string Id { get; set; } public string Username { get; set; } public string Acct { get; set; } public string DisplayName { get; set; } public bool Locked { get; set; } public bool Bot { get; set; } public bool? Discoverable { get; set; } public bool Indexable { get; set; } public bool Group { get; set; } public string CreatedAt { get; set; } public string Note { get; set; } public string Url { get; set; } public string Uri { get; set; } public string Avatar { get; set; } public string AvatarStatic { get; set; } public string Header { get; set; } public string HeaderStatic { get; set; } public int FollowersCount { get; set; } public int FollowingCount { get; set; } public int StatusesCount { get; set; } public string LastStatusAt { get; set; } public bool? HideCollections { get; set; } public bool Noindex { get; set; } = true; public List Emojis { get; set; } = new(); public List Roles { get; set; } = new(); public bool? Memorial { get; set; } public string AvatarDescription { get; set; } = string.Empty; public string HeaderDescription { get; set; } = string.Empty; public List Fields { get; set; } = new(); public Source Source { get; set; } public Account Moved { get; set; }//the account it moved to, when that account names it among its aliases } public class CustomEmojiEntity { public string Shortcode { get; set; } public string Url { get; set; } public string StaticUrl { get; set; } public bool VisibleInPicker { get; set; } public string Category { get; set; } } public class Field { public string Name { get; set; } public string Value { get; set; } public string VerifiedAt { get; set; } } public class Source { public string Privacy { get; set; } = "public"; public bool Sensitive { get; set; } public string Language { get; set; } public string Note { get; set; } = string.Empty; public List Fields { get; set; } = new(); public int FollowRequestsCount { get; set; } public string AttributionDomains { get; set; } public string QuotePolicy { get; set; } = "public"; } public class PrivaPubStatus { public string ObjectType { get; set; } public bool Locked { get; set; }//its community's moderators locked it: a reply is refused public string Approval { get; set; }//our reply or boost its target's author must approve: "pending", "rejected" public string Title { get; set; } public string Excerpt { get; set; } public string Cover { get; set; } public PrivaPubSource Source { get; set; } public PrivaPubLink Link { get; set; } public PrivaPubVideo Video { get; set; } public PrivaPubAudio Audio { get; set; } public PrivaPubEvent Event { get; set; } public PrivaPubPlace Place { get; set; }//a remote post's own place (Pixelfed), shown only public Account Wall { get; set; }//whose wall it was written on (FEP-400e), when not its author's public PrivaPubVotes Votes { get; set; } = new(); public List Flairs { get; set; } = new(); } public class PrivaPubSource { public string Content { get; set; } public string MediaType { get; set; } } public class PrivaPubLink { public string Url { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public bool FromPublisher { get; set; } } public class PrivaPubVariant { public string Url { get; set; } public string MediaType { get; set; } public int? Width { get; set; } public int? Height { get; set; } public double? Fps { get; set; } public long? Size { get; set; } public List Streams { get; set; } = new(); } public class PrivaPubVideo { public double? Duration { get; set; } public List Variants { get; set; } = new(); public bool IsLive { get; set; } public int? State { get; set; } public long? Views { get; set; } public int? CommentsPolicy { get; set; } public bool? DownloadEnabled { get; set; } public string Licence { get; set; } public string Category { get; set; } public string Channel { get; set; } public List Captions { get; set; } = new(); } public class PrivaPubCaption { public string Language { get; set; } public string Url { get; set; } } public class PrivaPubAudio { public double? Duration { get; set; } public List Variants { get; set; } = new(); public string Album { get; set; } public int? Position { get; set; } public string Licence { get; set; } } public class PrivaPubEvent { public string Start { get; set; } public string End { get; set; } public string TimeZone { get; set; } public bool Floating { get; set; } public List Places { get; set; } = new(); public string OnlineUrl { get; set; } public string JoinMode { get; set; } public int? Participants { get; set; } public int? Capacity { get; set; } public string Status { get; set; } public string Category { get; set; } public string Participation { get; set; }//the viewer's: "pending", "accepted" or "rejected" } public class PrivaPubPlace { public string Name { get; set; } public string Address { get; set; } public string Country { get; set; }//a post's own place only public double? Latitude { get; set; } public double? Longitude { get; set; } public string Url { get; set; } } public class PrivaPubFlair { public string Id { get; set; } public string Name { get; set; } public string Slug { get; set; } public string Description { get; set; } public string Color { get; set; } public string TextColor { get; set; } public string BackgroundColor { get; set; } public bool BlurImages { get; set; } } public class PrivaPubVotes { public int Up { get; set; } public int Down { get; set; } public bool? Downvoted { get; set; }//the viewer's own downvote; null with no viewer } public class QuoteEntity { public string State { get; set; } public Status QuotedStatus { get; set; } public string QuotedStatusId { get; set; } } public class QuoteApprovalEntity { public List Automatic { get; set; } = new(); public List Manual { get; set; } = new(); public string CurrentUser { get; set; } = "denied"; } public class FilterEntity { public string Id { get; set; } public string Title { get; set; } public List Context { get; set; } = new(); public string ExpiresAt { get; set; } public string FilterAction { get; set; } public List Keywords { get; set; } = new(); public List Statuses { get; set; } = new(); } public class FilterKeywordEntity { public string Id { get; set; } public string Keyword { get; set; } public bool WholeWord { get; set; } } public class FilterStatusEntity { public string Id { get; set; } public string StatusId { get; set; } } public class FilterResultEntity { public FilterEntity Filter { get; set; } public List KeywordMatches { get; set; } public List StatusMatches { get; set; } } // the v1 filter, which is one keyword of a v2 filter public class FilterV1Entity { public string Id { get; set; } public string Phrase { get; set; } public List Context { get; set; } = new(); public bool WholeWord { get; set; } public string ExpiresAt { get; set; } public bool Irreversible { get; set; } } public class EmojiReactionEntity { public string Name { get; set; } public int Count { get; set; } public bool Me { get; set; } public string Url { get; set; } public string StaticUrl { get; set; } } public class PleromaStatus { public List EmojiReactions { get; set; } = new(); } public class PollEntity { public string Id { get; set; } public string ExpiresAt { get; set; } public bool Expired { get; set; } public bool Multiple { get; set; } public int VotesCount { get; set; } public int? VotersCount { get; set; } public bool? Voted { get; set; } public List OwnVotes { get; set; } public List Options { get; set; } = new(); public List Emojis { get; set; } = new(); } public class PollOptionEntity { public string Title { get; set; } public int? VotesCount { get; set; } } public class PreviewCard { public string Url { get; set; } public string Title { get; set; } = string.Empty; public string Description { get; set; } = string.Empty; public string Type { get; set; } = "link"; public string AuthorName { get; set; } = string.Empty; public string AuthorUrl { get; set; } = string.Empty; public string ProviderName { get; set; } = string.Empty; public string ProviderUrl { get; set; } = string.Empty; public string Html { get; set; } = string.Empty; public int Width { get; set; } public int Height { get; set; } public string Image { get; set; } public string ImageDescription { get; set; } = string.Empty; public string EmbedUrl { get; set; } = string.Empty; public string Blurhash { get; set; } public string Language { get; set; } public string PublishedAt { get; set; } public List Authors { get; set; } = new(); } public class Status { public string Id { get; set; } public string Uri { get; set; } public string Url { get; set; } public Account Account { get; set; } public string InReplyToId { get; set; } public string InReplyToAccountId { get; set; } public Status Reblog { get; set; } public string Content { get; set; } = string.Empty; public string CreatedAt { get; set; } public string EditedAt { get; set; } public List Emojis { get; set; } = new(); public int RepliesCount { get; set; } public int ReblogsCount { get; set; } public int FavouritesCount { get; set; } public bool Reblogged { get; set; } public bool Favourited { get; set; } public bool Muted { get; set; } public bool Bookmarked { get; set; } public bool Pinned { get; set; } public bool Sensitive { get; set; } public string SpoilerText { get; set; } = string.Empty; public string Visibility { get; set; } public List MediaAttachments { get; set; } = new(); public List Mentions { get; set; } = new(); public List Tags { get; set; } = new(); public PreviewCard Card { get; set; } public PollEntity Poll { get; set; } public Application Application { get; set; } public string Language { get; set; } public string Text { get; set; } public List Filtered { get; set; } = new(); public PrivaPubStatus Privapub { get; set; } public List EmojiReactions { get; set; } = new(); public PleromaStatus Pleroma { get; set; } public QuoteEntity Quote { get; set; } public int QuotesCount { get; set; } public QuoteApprovalEntity QuoteApproval { get; set; } public InteractionPolicyEntity InteractionPolicy { get; set; }//GoToSocial's: who may like, reply to and boost a remote post } // GoToSocial's interaction_policy: "public", "followers", "following", "author", "me", or an account's URI public class InteractionPolicyEntity { public InteractionRuleEntity CanFavourite { get; set; } public InteractionRuleEntity CanReply { get; set; } public InteractionRuleEntity CanReblog { get; set; } } public class InteractionRuleEntity { public List AutomaticApproval { get; set; } = new(); public List ManualApproval { get; set; } = new(); } public class MediaAttachment { public string Id { get; set; } public string Type { get; set; } public string Url { get; set; } public string PreviewUrl { get; set; } public string RemoteUrl { get; set; } public object Meta { get; set; } public string Description { get; set; } public string Blurhash { get; set; } } public class StatusMention { public string Id { get; set; } public string Username { get; set; } public string Url { get; set; } public string Acct { get; set; } } public class StatusTag { public string Name { get; set; } public string Url { get; set; } } public class Application { public string Id { get; set; } public string Name { get; set; } public string Website { get; set; } public List Scopes { get; set; } = new(); public List RedirectUris { get; set; } = new(); public string RedirectUri { get; set; } public string ClientId { get; set; } public string ClientSecret { get; set; } public string VapidKey { get; set; } = string.Empty; } public class Relationship { public string Id { get; set; } public bool Following { get; set; } public bool ShowingReblogs { get; set; } public bool Notifying { get; set; } public List Languages { get; set; } public bool FollowedBy { get; set; } public bool Blocking { get; set; } public bool BlockedBy { get; set; } public bool Muting { get; set; } public bool MutingNotifications { get; set; } public bool Requested { get; set; } public bool RequestedBy { get; set; } public bool DomainBlocking { get; set; } public bool Endorsed { get; set; } public string Note { get; set; } = string.Empty; } public class Notification { public string Id { get; set; } public string Type { get; set; } public string CreatedAt { get; set; } public string GroupKey { get; set; } public Account Account { get; set; } public Status Status { get; set; } public string Emoji { get; set; } public string EmojiUrl { get; set; } public AccountWarning ModerationWarning { get; set; } } public class AccountWarning { public string Id { get; set; } public string Action { get; set; } = "none"; public string Text { get; set; } = string.Empty; public List StatusIds { get; set; } = new(); public Account TargetAccount { get; set; } public object Appeal { get; set; } public string CreatedAt { get; set; } } public class Context { public List Ancestors { get; set; } = new(); public List Descendants { get; set; } = new(); } public class StatusEdit { public string Content { get; set; } public string SpoilerText { get; set; } public bool Sensitive { get; set; } public string CreatedAt { get; set; } public Account Account { get; set; } public List MediaAttachments { get; set; } = new(); public List Emojis { get; set; } = new(); } public class StatusSource { public string Id { get; set; } public string Text { get; set; } public string SpoilerText { get; set; } } public class SearchResults { public List Accounts { get; set; } = new(); public List Statuses { get; set; } = new(); public List Hashtags { get; set; } = new(); } public class Conversation { public string Id { get; set; } public bool Unread { get; set; } public List Accounts { get; set; } = new(); public Status LastStatus { get; set; } } public class Marker { public string LastReadId { get; set; } public int Version { get; set; } public string UpdatedAt { get; set; } } }