| 
									
										
										
										
											2023-03-12 16:00:57 +01:00
										 |  |  | // GoToSocial | 
					
						
							|  |  |  | // Copyright (C) GoToSocial Authors admin@gotosocial.org | 
					
						
							|  |  |  | // SPDX-License-Identifier: AGPL-3.0-or-later | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | // (at your option) any later version. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | // GNU Affero General Public License for more details. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  | // along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-08 14:25:55 +02:00
										 |  |  | package model | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-12 09:49:33 -08:00
										 |  |  | import ( | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-26 15:34:10 +02:00
										 |  |  | 	"code.superseriousbusiness.org/gotosocial/internal/language" | 
					
						
							| 
									
										
										
										
											2025-02-12 09:49:33 -08:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2023-11-17 11:35:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | // Status models a status or post. | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | // | 
					
						
							|  |  |  | // swagger:model status | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | type Status struct { | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// ID of the status. | 
					
						
							|  |  |  | 	// example: 01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	ID string `json:"id"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// The date when this status was created (ISO 8601 Datetime). | 
					
						
							|  |  |  | 	// example: 2021-07-30T09:20:25+00:00 | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	CreatedAt string `json:"created_at"` | 
					
						
							| 
									
										
										
										
											2024-12-05 13:35:07 +00:00
										 |  |  | 	// Timestamp of when the status was last edited (ISO 8601 Datetime). | 
					
						
							|  |  |  | 	// example: 2021-07-30T09:20:25+00:00 | 
					
						
							|  |  |  | 	// nullable: true | 
					
						
							|  |  |  | 	EditedAt *string `json:"edited_at"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// ID of the status being replied to. | 
					
						
							|  |  |  | 	// example: 01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	// nullable: true | 
					
						
							|  |  |  | 	InReplyToID *string `json:"in_reply_to_id"` | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	// ID of the account being replied to. | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// example: 01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	// nullable: true | 
					
						
							|  |  |  | 	InReplyToAccountID *string `json:"in_reply_to_account_id"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Status contains sensitive content. | 
					
						
							|  |  |  | 	// example: false | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Sensitive bool `json:"sensitive"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Subject, summary, or content warning for the status. | 
					
						
							|  |  |  | 	// example: warning nsfw | 
					
						
							| 
									
										
										
										
											2021-05-27 16:06:24 +02:00
										 |  |  | 	SpoilerText string `json:"spoiler_text"` | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	// Visibility of this status. | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// example: unlisted | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	Visibility Visibility `json:"visibility"` | 
					
						
							| 
									
										
										
										
											2024-08-22 19:47:10 +02:00
										 |  |  | 	// Set to "true" if status is not federated, ie., a "local only" status; omitted from response otherwise. | 
					
						
							|  |  |  | 	LocalOnly bool `json:"local_only,omitempty"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Primary language of this status (ISO 639 Part 1 two-letter language code). | 
					
						
							| 
									
										
										
										
											2022-12-15 09:41:49 +01:00
										 |  |  | 	// Will be null if language is not known. | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// example: en | 
					
						
							| 
									
										
										
										
											2022-12-15 09:41:49 +01:00
										 |  |  | 	Language *string `json:"language"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// ActivityPub URI of the status. Equivalent to the status's activitypub ID. | 
					
						
							|  |  |  | 	// example: https://example.org/users/some_user/statuses/01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	URI string `json:"uri"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// The status's publicly available web URL. This link will only work if the visibility of the status is 'public'. | 
					
						
							|  |  |  | 	// example: https://example.org/@some_user/statuses/01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	URL string `json:"url"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Number of replies to this status, according to our instance. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	RepliesCount int `json:"replies_count"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Number of times this status has been boosted/reblogged, according to our instance. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	ReblogsCount int `json:"reblogs_count"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Number of favourites/likes this status has received, according to our instance. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	FavouritesCount int `json:"favourites_count"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// This status has been favourited by the account viewing it. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Favourited bool `json:"favourited"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// This status has been boosted/reblogged by the account viewing it. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Reblogged bool `json:"reblogged"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// Replies to this status have been muted by the account viewing it. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Muted bool `json:"muted"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// This status has been bookmarked by the account viewing it. | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Bookmarked bool `json:"bookmarked"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// This status has been pinned by the account viewing it (only relevant for your own statuses). | 
					
						
							| 
									
										
										
										
											2022-05-28 19:59:55 +02:00
										 |  |  | 	Pinned bool `json:"pinned"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// The content of this status. Should be HTML, but might also be plaintext in some cases. | 
					
						
							|  |  |  | 	// example: <p>Hey this is a status!</p> | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Content string `json:"content"` | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// The status that this status reblogs/boosts. | 
					
						
							|  |  |  | 	// nullable: true | 
					
						
							| 
									
										
										
										
											2022-05-28 19:59:55 +02:00
										 |  |  | 	Reblog *StatusReblogged `json:"reblog"` | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// The application used to post this status, if visible. | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	Application *Application `json:"application,omitempty"` | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	// The account that authored this status. | 
					
						
							|  |  |  | 	Account *Account `json:"account"` | 
					
						
							|  |  |  | 	// Media that is attached to this status. | 
					
						
							| 
									
										
										
										
											2023-12-09 16:54:38 +01:00
										 |  |  | 	MediaAttachments []*Attachment `json:"media_attachments"` | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	// Mentions of users within the status content. | 
					
						
							|  |  |  | 	Mentions []Mention `json:"mentions"` | 
					
						
							|  |  |  | 	// Hashtags used within the status content. | 
					
						
							|  |  |  | 	Tags []Tag `json:"tags"` | 
					
						
							|  |  |  | 	// Custom emoji to be used when rendering status content. | 
					
						
							|  |  |  | 	Emojis []Emoji `json:"emojis"` | 
					
						
							|  |  |  | 	// Preview card for links included within status content. | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	// nullable: true | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Card *Card `json:"card"` | 
					
						
							|  |  |  | 	// The poll attached to the status. | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	// nullable: true | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | 	Poll *Poll `json:"poll"` | 
					
						
							|  |  |  | 	// Plain-text source of a status. Returned instead of content when status is deleted, | 
					
						
							|  |  |  | 	// so the user may redraft from the source text without the client having to reverse-engineer | 
					
						
							|  |  |  | 	// the original text from the HTML content. | 
					
						
							| 
									
										
										
										
											2022-09-02 17:00:11 +02:00
										 |  |  | 	Text string `json:"text,omitempty"` | 
					
						
							| 
									
										
										
										
											2025-03-06 11:31:52 -05:00
										 |  |  | 	// Content type that was used to parse the status's text. Returned when | 
					
						
							|  |  |  | 	// status is deleted, so if the user is redrafting the message the client | 
					
						
							|  |  |  | 	// can default to the same content type. | 
					
						
							|  |  |  | 	ContentType StatusContentType `json:"content_type,omitempty"` | 
					
						
							| 
									
										
										
										
											2024-05-06 04:49:08 -07:00
										 |  |  | 	// A list of filters that matched this status and why they matched, if there are any such filters. | 
					
						
							|  |  |  | 	Filtered []FilterResult `json:"filtered,omitempty"` | 
					
						
							| 
									
										
										
										
											2024-07-17 16:46:52 +02:00
										 |  |  | 	// The interaction policy for this status, as set by the status author. | 
					
						
							|  |  |  | 	InteractionPolicy InteractionPolicy `json:"interaction_policy"` | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2023-11-17 11:35:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | // WebStatus is like *model.Status, but contains | 
					
						
							|  |  |  | // additional fields used only for HTML templating. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:ignore | 
					
						
							|  |  |  | type WebStatus struct { | 
					
						
							|  |  |  | 	*Status | 
					
						
							| 
									
										
										
										
											2023-11-17 11:35:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-07 15:04:34 +01:00
										 |  |  | 	// HTML version of spoiler content | 
					
						
							|  |  |  | 	// (ie., not converted to plaintext). | 
					
						
							|  |  |  | 	SpoilerContent string `json:"-"` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-21 14:22:08 +02:00
										 |  |  | 	// Override API account with web account. | 
					
						
							|  |  |  | 	Account *WebAccount `json:"account"` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-15 11:47:57 +02:00
										 |  |  | 	// Web version of media | 
					
						
							|  |  |  | 	// attached to this status. | 
					
						
							|  |  |  | 	MediaAttachments []*WebAttachment `json:"media_attachments"` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | 	// Template-ready language tag and | 
					
						
							|  |  |  | 	// string, based on *status.Language. | 
					
						
							|  |  |  | 	LanguageTag *language.Language | 
					
						
							| 
									
										
										
										
											2023-11-22 12:17:42 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Template-ready poll options with vote shares | 
					
						
							|  |  |  | 	// calculated as a percentage of total votes. | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | 	PollOptions []WebPollOption | 
					
						
							| 
									
										
										
										
											2023-12-27 11:23:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Status is from a local account. | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | 	Local bool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Level of indentation at which to | 
					
						
							|  |  |  | 	// display this status in the web view. | 
					
						
							|  |  |  | 	Indent int | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-13 12:26:16 +02:00
										 |  |  | 	// This status is the last visible status | 
					
						
							|  |  |  | 	// in the main thread, so everything below | 
					
						
							|  |  |  | 	// can be considered "replies". | 
					
						
							|  |  |  | 	ThreadLastMain bool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// This status is the one around which | 
					
						
							|  |  |  | 	// the thread context was constructed. | 
					
						
							|  |  |  | 	ThreadContextStatus bool | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// This status is the first visibile status | 
					
						
							|  |  |  | 	// after the "main" thread, so it and everything | 
					
						
							| 
									
										
										
										
											2024-07-12 20:36:03 +02:00
										 |  |  | 	// below it can be considered "replies". | 
					
						
							|  |  |  | 	ThreadFirstReply bool | 
					
						
							| 
									
										
										
										
											2025-04-18 17:36:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Sorted slice of StatusEdit times for | 
					
						
							|  |  |  | 	// this status, from latest to oldest. | 
					
						
							|  |  |  | 	// Only set if status has been edited. | 
					
						
							|  |  |  | 	// Last entry is always creation time. | 
					
						
							|  |  |  | 	EditTimeline []string `json:"-"` | 
					
						
							| 
									
										
										
										
											2021-03-11 14:30:14 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-05 12:47:38 +01:00
										 |  |  | /* | 
					
						
							|  |  |  | ** The below functions are added onto the API model status so that it satisfies | 
					
						
							|  |  |  | ** the Preparable interface in internal/timeline. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s *Status) GetID() string { | 
					
						
							|  |  |  | 	return s.ID | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s *Status) GetAccountID() string { | 
					
						
							|  |  |  | 	if s.Account != nil { | 
					
						
							|  |  |  | 		return s.Account.ID | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return "" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s *Status) GetBoostOfID() string { | 
					
						
							|  |  |  | 	if s.Reblog != nil { | 
					
						
							|  |  |  | 		return s.Reblog.ID | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return "" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (s *Status) GetBoostOfAccountID() string { | 
					
						
							|  |  |  | 	if s.Reblog != nil && s.Reblog.Account != nil { | 
					
						
							|  |  |  | 		return s.Reblog.Account.ID | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return "" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | // StatusReblogged represents a reblogged status. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:model statusReblogged | 
					
						
							|  |  |  | type StatusReblogged struct { | 
					
						
							|  |  |  | 	*Status | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // StatusCreateRequest models status creation parameters. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2024-03-06 09:05:45 -08:00
										 |  |  | // swagger:ignore | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | type StatusCreateRequest struct { | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Text content of the status. | 
					
						
							|  |  |  | 	// If media_ids is provided, this becomes optional. | 
					
						
							|  |  |  | 	// Attaching a poll is optional while status is provided. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Status string `form:"status" json:"status"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Array of Attachment ids to be attached as media. | 
					
						
							|  |  |  | 	// If provided, status becomes optional, and poll cannot be used. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	MediaIDs []string `form:"media_ids[]" json:"media_ids"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	// Poll to include with this status. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Poll *PollRequest `form:"poll" json:"poll"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// ID of the status being replied to, if status is a reply. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	InReplyToID string `form:"in_reply_to_id" json:"in_reply_to_id"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Status and attached media should be marked as sensitive. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Sensitive bool `form:"sensitive" json:"sensitive"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Text to be shown as a warning or subject before the actual content. | 
					
						
							|  |  |  | 	// Statuses are generally collapsed behind this field. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	SpoilerText string `form:"spoiler_text" json:"spoiler_text"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Visibility of the posted status. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Visibility Visibility `form:"visibility" json:"visibility"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Set to "true" if this status should not be | 
					
						
							|  |  |  | 	// federated,ie. it should be a "local only" status. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	LocalOnly *bool `form:"local_only" json:"local_only"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-22 19:47:10 +02:00
										 |  |  | 	// Deprecated: Only used if LocalOnly is not set. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Federated *bool `form:"federated" json:"federated"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// ISO 8601 Datetime at which to schedule a status. | 
					
						
							| 
									
										
										
										
											2025-02-12 09:49:33 -08:00
										 |  |  | 	// | 
					
						
							|  |  |  | 	// Providing this parameter with a *future* time will cause ScheduledStatus to be returned instead of Status. | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | 	// Must be at least 5 minutes in the future. | 
					
						
							| 
									
										
										
										
											2025-02-12 09:49:33 -08:00
										 |  |  | 	// This feature isn't implemented yet. | 
					
						
							|  |  |  | 	// | 
					
						
							|  |  |  | 	// Providing this parameter with a *past* time will cause the status to be backdated, | 
					
						
							|  |  |  | 	// and will not push it to the user's followers. This is intended for importing old statuses. | 
					
						
							|  |  |  | 	ScheduledAt *time.Time `form:"scheduled_at" json:"scheduled_at"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	// ISO 639 language code for this status. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	Language string `form:"language" json:"language"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-02 03:06:40 -08:00
										 |  |  | 	// Content type to use when parsing this status. | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	ContentType StatusContentType `form:"content_type" json:"content_type"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	// Interaction policy to use for this status. | 
					
						
							|  |  |  | 	InteractionPolicy *InteractionPolicy `form:"-" json:"interaction_policy"` | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Separate form for parsing interaction | 
					
						
							|  |  |  | // policy on status create requests. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:ignore | 
					
						
							|  |  |  | type StatusInteractionPolicyForm struct { | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-18 18:35:35 +02:00
										 |  |  | 	// Interaction policy to use for this status. | 
					
						
							|  |  |  | 	InteractionPolicy *InteractionPolicy `form:"interaction_policy" json:"-"` | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | // Visibility models the visibility of a status. | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | // swagger:enum statusVisibility | 
					
						
							|  |  |  | // swagger:type string | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | type Visibility string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const ( | 
					
						
							| 
									
										
										
										
											2024-09-09 18:07:25 +02:00
										 |  |  | 	// VisibilityNone is visible to nobody. This is only used for the visibility of web statuses. | 
					
						
							|  |  |  | 	VisibilityNone Visibility = "none" | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// VisibilityPublic is visible to everyone, and will be available via the web even for nonauthenticated users. | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	VisibilityPublic Visibility = "public" | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// VisibilityUnlisted is visible to everyone, but only on home timelines, lists, etc. | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	VisibilityUnlisted Visibility = "unlisted" | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// VisibilityPrivate is visible only to followers of the account that posted the status. | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	VisibilityPrivate Visibility = "private" | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// VisibilityMutualsOnly is visible only to mutual followers of the account that posted the status. | 
					
						
							|  |  |  | 	VisibilityMutualsOnly Visibility = "mutuals_only" | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-31 17:49:59 +02:00
										 |  |  | 	// VisibilityDirect is visible only to accounts tagged in the status. It is equivalent to a direct message. | 
					
						
							| 
									
										
										
										
											2021-04-19 19:42:19 +02:00
										 |  |  | 	VisibilityDirect Visibility = "direct" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2021-05-08 14:25:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-02 03:06:40 -08:00
										 |  |  | // StatusContentType is the content type with which to parse the submitted status. | 
					
						
							|  |  |  | // Can be either text/plain or text/markdown. Empty will default to text/plain. | 
					
						
							| 
									
										
										
										
											2021-08-02 19:06:44 +02:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2023-03-02 03:06:40 -08:00
										 |  |  | // swagger:enum statusContentType | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | // swagger:type string | 
					
						
							| 
									
										
										
										
											2023-03-02 03:06:40 -08:00
										 |  |  | type StatusContentType string | 
					
						
							| 
									
										
										
										
											2021-07-26 20:25:54 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | // Content type to use when parsing submitted | 
					
						
							|  |  |  | // status into an html-formatted status. | 
					
						
							| 
									
										
										
										
											2022-08-06 12:09:21 +02:00
										 |  |  | const ( | 
					
						
							| 
									
										
										
										
											2023-03-02 03:06:40 -08:00
										 |  |  | 	StatusContentTypePlain    StatusContentType = "text/plain" | 
					
						
							|  |  |  | 	StatusContentTypeMarkdown StatusContentType = "text/markdown" | 
					
						
							|  |  |  | 	StatusContentTypeDefault                    = StatusContentTypePlain | 
					
						
							| 
									
										
										
										
											2022-08-06 12:09:21 +02:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:49:20 +02:00
										 |  |  | // StatusSource represents the source text of a | 
					
						
							|  |  |  | // status as submitted to the API when it was created. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:model statusSource | 
					
						
							|  |  |  | type StatusSource struct { | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:49:20 +02:00
										 |  |  | 	// ID of the status. | 
					
						
							|  |  |  | 	// example: 01FBVD42CQ3ZEEVMW180SBX03B | 
					
						
							|  |  |  | 	ID string `json:"id"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:49:20 +02:00
										 |  |  | 	// Plain-text source of a status. | 
					
						
							| 
									
										
										
										
											2024-04-18 13:22:55 +02:00
										 |  |  | 	Text string `json:"text"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:49:20 +02:00
										 |  |  | 	// Plain-text version of spoiler text. | 
					
						
							|  |  |  | 	SpoilerText string `json:"spoiler_text"` | 
					
						
							| 
									
										
										
										
											2025-03-06 11:31:52 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Content type that was used to parse the text. | 
					
						
							|  |  |  | 	ContentType StatusContentType `json:"content_type,omitempty"` | 
					
						
							| 
									
										
										
										
											2024-04-17 14:49:20 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | // StatusEdit represents one historical revision of a status, containing | 
					
						
							|  |  |  | // partial information about the state of the status at that revision. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:model statusEdit | 
					
						
							|  |  |  | type StatusEdit struct { | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// The content of this status at this revision. | 
					
						
							|  |  |  | 	// Should be HTML, but might also be plaintext in some cases. | 
					
						
							|  |  |  | 	// example: <p>Hey this is a status!</p> | 
					
						
							|  |  |  | 	Content string `json:"content"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// Subject, summary, or content warning for the status at this revision. | 
					
						
							|  |  |  | 	// example: warning nsfw | 
					
						
							|  |  |  | 	SpoilerText string `json:"spoiler_text"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// Status marked sensitive at this revision. | 
					
						
							|  |  |  | 	// example: false | 
					
						
							|  |  |  | 	Sensitive bool `json:"sensitive"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// The date when this revision was created (ISO 8601 Datetime). | 
					
						
							|  |  |  | 	// example: 2021-07-30T09:20:25+00:00 | 
					
						
							|  |  |  | 	CreatedAt string `json:"created_at"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// The account that authored this status. | 
					
						
							|  |  |  | 	Account *Account `json:"account"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// The poll attached to the status at this revision. | 
					
						
							|  |  |  | 	// Note that edits changing the poll options will be collapsed together into one edit, since this action resets the poll. | 
					
						
							|  |  |  | 	// nullable: true | 
					
						
							|  |  |  | 	Poll *Poll `json:"poll"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// Media that is attached to this status. | 
					
						
							|  |  |  | 	MediaAttachments []*Attachment `json:"media_attachments"` | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-17 14:06:49 +02:00
										 |  |  | 	// Custom emoji to be used when rendering status content. | 
					
						
							|  |  |  | 	Emojis []Emoji `json:"emojis"` | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-12-23 17:54:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // StatusEditRequest models status edit parameters. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // swagger:ignore | 
					
						
							|  |  |  | type StatusEditRequest struct { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Text content of the status. | 
					
						
							|  |  |  | 	// If media_ids is provided, this becomes optional. | 
					
						
							|  |  |  | 	// Attaching a poll is optional while status is provided. | 
					
						
							|  |  |  | 	Status string `form:"status" json:"status"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Text to be shown as a warning or subject before the actual content. | 
					
						
							|  |  |  | 	// Statuses are generally collapsed behind this field. | 
					
						
							|  |  |  | 	SpoilerText string `form:"spoiler_text" json:"spoiler_text"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Content type to use when parsing this status. | 
					
						
							|  |  |  | 	ContentType StatusContentType `form:"content_type" json:"content_type"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Status and attached media should be marked as sensitive. | 
					
						
							|  |  |  | 	Sensitive bool `form:"sensitive" json:"sensitive"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// ISO 639 language code for this status. | 
					
						
							|  |  |  | 	Language string `form:"language" json:"language"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Array of Attachment ids to be attached as media. | 
					
						
							|  |  |  | 	// If provided, status becomes optional, and poll cannot be used. | 
					
						
							|  |  |  | 	MediaIDs []string `form:"media_ids[]" json:"media_ids"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Array of Attachment attributes to be updated in attached media. | 
					
						
							|  |  |  | 	MediaAttributes []AttachmentAttributesRequest `form:"media_attributes[]" json:"media_attributes"` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// Poll to include with this status. | 
					
						
							|  |  |  | 	Poll *PollRequest `form:"poll" json:"poll"` | 
					
						
							|  |  |  | } |