summaryrefslogtreecommitdiff
path: root/internal/api/model
diff options
context:
space:
mode:
authorLibravatar nicole mikołajczyk <git@mkljczk.pl>2025-08-12 14:05:15 +0200
committerLibravatar kim <gruf@noreply.codeberg.org>2025-08-12 14:05:15 +0200
commit660cf2c94ce6a87ac33d704ab1f68b2d4a258d92 (patch)
tree03eeab55b2f3bc2f3fc7667d245ed3b561a4f1a4 /internal/api/model
parent[docs] Revamp trusted proxies warning a bit (#4365) (diff)
downloadgotosocial-660cf2c94ce6a87ac33d704ab1f68b2d4a258d92.tar.xz
[feature] scheduled statuses (#4274)
An implementation of [`scheduled_statuses`](https://docs.joinmastodon.org/methods/scheduled_statuses/). Will fix #1006. this is heavily WIP and I need to reorganize some of the code, working on this made me somehow familiar with the codebase and led to my other recent contributions i told some fops on fedi i'd work on this so i have no choice but to complete it 🤷‍♀️ btw iirc my avatar presents me working on this branch Signed-off-by: nicole mikołajczyk <git@mkljczk.pl> Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4274 Co-authored-by: nicole mikołajczyk <git@mkljczk.pl> Co-committed-by: nicole mikołajczyk <git@mkljczk.pl>
Diffstat (limited to 'internal/api/model')
-rw-r--r--internal/api/model/scheduledstatus.go50
-rw-r--r--internal/api/model/status.go1
2 files changed, 37 insertions, 14 deletions
diff --git a/internal/api/model/scheduledstatus.go b/internal/api/model/scheduledstatus.go
index 1b074ab55..4acfde697 100644
--- a/internal/api/model/scheduledstatus.go
+++ b/internal/api/model/scheduledstatus.go
@@ -17,22 +17,46 @@
package model
+import "time"
+
// ScheduledStatus represents a status that will be published at a future scheduled date.
+//
+// swagger:model scheduledStatus
type ScheduledStatus struct {
- ID string `json:"id"`
- ScheduledAt string `json:"scheduled_at"`
- Params *StatusParams `json:"params"`
- MediaAttachments []Attachment `json:"media_attachments"`
+ ID string `json:"id"`
+ ScheduledAt string `json:"scheduled_at"`
+ Params *ScheduledStatusParams `json:"params"`
+ MediaAttachments []*Attachment `json:"media_attachments"`
}
// StatusParams represents parameters for a scheduled status.
-type StatusParams struct {
- Text string `json:"text"`
- InReplyToID string `json:"in_reply_to_id,omitempty"`
- MediaIDs []string `json:"media_ids,omitempty"`
- Sensitive bool `json:"sensitive,omitempty"`
- SpoilerText string `json:"spoiler_text,omitempty"`
- Visibility string `json:"visibility"`
- ScheduledAt string `json:"scheduled_at,omitempty"`
- ApplicationID string `json:"application_id"`
+type ScheduledStatusParams struct {
+ Text string `json:"text"`
+ MediaIDs []string `json:"media_ids,omitempty"`
+ Sensitive bool `json:"sensitive,omitempty"`
+ Poll *ScheduledStatusParamsPoll `json:"poll,omitempty"`
+ SpoilerText string `json:"spoiler_text,omitempty"`
+ Visibility Visibility `json:"visibility"`
+ InReplyToID string `json:"in_reply_to_id,omitempty"`
+ Language string `json:"language"`
+ ApplicationID string `json:"application_id"`
+ LocalOnly bool `json:"local_only,omitempty"`
+ ContentType StatusContentType `json:"content_type,omitempty"`
+ InteractionPolicy *InteractionPolicy `json:"interaction_policy,omitempty"`
+ ScheduledAt *string `json:"scheduled_at"`
+}
+
+type ScheduledStatusParamsPoll struct {
+ Options []string `json:"options"`
+ ExpiresIn int `json:"expires_in"`
+ Multiple bool `json:"multiple"`
+ HideTotals bool `json:"hide_totals"`
+}
+
+// ScheduledStatusUpdateRequest models a request to update the scheduled status publication date.
+//
+// swagger:ignore
+type ScheduledStatusUpdateRequest struct {
+ // ISO 8601 Datetime at which to schedule a status.
+ ScheduledAt *time.Time `form:"scheduled_at" json:"scheduled_at"`
}
diff --git a/internal/api/model/status.go b/internal/api/model/status.go
index 4561996ad..3edb4be5f 100644
--- a/internal/api/model/status.go
+++ b/internal/api/model/status.go
@@ -252,7 +252,6 @@ type StatusCreateRequest struct {
//
// Providing this parameter with a *future* time will cause ScheduledStatus to be returned instead of Status.
// Must be at least 5 minutes in the future.
- // 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.