model

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2023 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Account

type Account struct {
	// The account id.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	ID string `json:"id"`
	// The username of the account, not including domain.
	// example: some_user
	Username string `json:"username"`
	// The account URI as discovered via webfinger.
	// Equal to username for local users, or username@domain for remote users.
	// example: some_user@example.org
	Acct string `json:"acct"`
	// The account's display name.
	// example: big jeff (he/him)
	DisplayName string `json:"display_name"`
	// Account manually approves follow requests.
	Locked bool `json:"locked"`
	// Account has opted into discovery features.
	Discoverable bool `json:"discoverable"`
	// Account identifies as a bot.
	Bot bool `json:"bot"`
	// When the account was created (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at"`
	// Bio/description of this account.
	Note string `json:"note"`
	// Web location of the account's profile page.
	// example: https://example.org/@some_user
	URL string `json:"url"`
	// Web location of the account's avatar.
	// example: https://example.org/media/some_user/avatar/original/avatar.jpeg
	Avatar string `json:"avatar"`
	// Web location of a static version of the account's avatar.
	// Only relevant when the account's main avatar is a video or a gif.
	// example: https://example.org/media/some_user/avatar/static/avatar.png
	AvatarStatic string `json:"avatar_static"`
	// Web location of the account's header image.
	// example: https://example.org/media/some_user/header/original/header.jpeg
	Header string `json:"header"`
	// Web location of a static version of the account's header.
	// Only relevant when the account's main header is a video or a gif.
	// example: https://example.org/media/some_user/header/static/header.png
	HeaderStatic string `json:"header_static"`
	// Number of accounts following this account, according to our instance.
	FollowersCount int `json:"followers_count"`
	// Number of account's followed by this account, according to our instance.
	FollowingCount int `json:"following_count"`
	// Number of statuses posted by this account, according to our instance.
	StatusesCount int `json:"statuses_count"`
	// When the account's most recent status was posted (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	LastStatusAt *string `json:"last_status_at"`
	// Array of custom emojis used in this account's note or display name.
	Emojis []Emoji `json:"emojis"`
	// Additional metadata attached to this account's profile.
	Fields []Field `json:"fields"`
	// Account has been suspended by our instance.
	Suspended bool `json:"suspended,omitempty"`
	// If this account has been muted, when will the mute expire (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	MuteExpiresAt string `json:"mute_expires_at,omitempty"`
	// Extra profile information. Shown only if the requester owns the account being requested.
	Source *Source `json:"source,omitempty"`
	// CustomCSS to include when rendering this account's profile or statuses.
	CustomCSS string `json:"custom_css,omitempty"`
	// Account has enabled RSS feed.
	EnableRSS bool `json:"enable_rss,omitempty"`
	// Role of the account on this instance.
	// Omitted for remote accounts.
	Role *AccountRole `json:"role,omitempty"`
}

Account models a fediverse account.

The modelled account can be either a remote account, or one on this instance.

swagger:model account

type AccountCreateRequest

type AccountCreateRequest struct {
	// Text that will be reviewed by moderators if registrations require manual approval.
	Reason string `form:"reason" json:"reason" xml:"reason"`
	// The desired username for the account.
	// swagger:parameters
	// pattern: [a-z0-9_]{2,64}
	// example: a_valid_username
	// required: true
	Username string `form:"username" json:"username" xml:"username" binding:"required"`
	// The email address to be used for login.
	// swagger:parameters
	// example: someone@wherever.com
	// required: true
	Email string `form:"email" json:"email" xml:"email" binding:"required"`
	// The password to be used for login. This will be hashed before storage.
	// swagger:parameters
	// example: some_really_really_really_strong_password
	// required: true
	Password string `form:"password" json:"password" xml:"password" binding:"required"`
	// The user agrees to the terms, conditions, and policies of the instance.
	// swagger:parameters
	// required: true
	Agreement bool `form:"agreement"  json:"agreement" xml:"agreement" binding:"required"`
	// The language of the confirmation email that will be sent.
	// swagger:parameters
	// example: en
	// Required: true
	Locale string `form:"locale" json:"locale" xml:"locale" binding:"required"`
	// The IP of the sign up request, will not be parsed from the form.
	// swagger:parameters
	// swagger:ignore
	IP net.IP `form:"-"`
}

AccountCreateRequest models account creation parameters.

swagger:parameters accountCreate

type AccountDeleteRequest added in v0.2.2

type AccountDeleteRequest struct {
	// Password of the account's user, for confirmation.
	Password string `form:"password" json:"password" xml:"password"`
}

AccountDeleteRequest models a request to delete an account.

swagger:ignore

type AccountFollowRequest

type AccountFollowRequest struct {
	// The id of the account to follow.
	ID string `form:"-" json:"-" xml:"-"`
	// Show reblogs from this account.
	Reblogs *bool `form:"reblogs" json:"reblogs" xml:"reblogs"`
	// Notify when this account posts.
	Notify *bool `form:"notify" json:"notify" xml:"notify"`
}

AccountFollowRequest models a request to follow an account.

swagger:ignore

type AccountRole added in v0.6.0

type AccountRole struct {
	Name AccountRoleName `json:"name"`
}

AccountRole models the role of an account.

swagger:model accountRole

type AccountRoleName added in v0.7.1

type AccountRoleName string

AccountRoleName represent the name of the role of an account.

swagger:type string

const (
	AccountRoleUser      AccountRoleName = "user"      // Standard user
	AccountRoleModerator AccountRoleName = "moderator" // Moderator privileges
	AccountRoleAdmin     AccountRoleName = "admin"     // Instance admin
	AccountRoleUnknown   AccountRoleName = ""          // We don't know / remote account
)

type AdminAccountActionRequest added in v0.2.2

type AdminAccountActionRequest struct {
	// Type of the account action. One of disable, silence, suspend.
	Type string `form:"type" json:"type" xml:"type"`
	// Text describing why an action was taken.
	Text string `form:"text" json:"text" xml:"text"`
	// ID of the account to be acted on.
	TargetAccountID string `form:"-" json:"-" xml:"-"`
}

AdminAccountActionRequest models the admin view of an account's details.

swagger:ignore

type AdminAccountInfo

type AdminAccountInfo struct {
	// The ID of the account in the database.
	// example: 01GQ4PHNT622DQ9X95XQX4KKNR
	ID string `json:"id"`
	// The username of the account.
	// example: dril
	Username string `json:"username"`
	// The domain of the account.
	// Null for local accounts.
	// example: example.org
	Domain *string `json:"domain"`
	// When the account was first discovered. (ISO 8601 Datetime)
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at"`
	// The email address associated with the account.
	// Empty string for remote accounts or accounts with
	// no known email address.
	// example: someone@somewhere.com
	Email string `json:"email"`
	// The IP address last used to login to this account.
	// Null if not known.
	// example: 192.0.2.1
	IP *string `json:"ip"`
	// All known IP addresses associated with this account.
	// NOT IMPLEMENTED (will always be empty array).
	// example: []
	IPs []interface{} `json:"ips"`
	// The locale of the account. (ISO 639 Part 1 two-letter language code)
	// example: en
	Locale string `json:"locale"`
	// The reason given when requesting an invite.
	// Null if not known / remote account.
	// example: Pleaaaaaaaaaaaaaaase!!
	InviteRequest *string `json:"invite_request"`
	// The current role of the account.
	Role AccountRole `json:"role"`
	// Whether the account has confirmed their email address.
	Confirmed bool `json:"confirmed"`
	// Whether the account is currently approved.
	Approved bool `json:"approved"`
	// Whether the account is currently disabled.
	Disabled bool `json:"disabled"`
	// Whether the account is currently silenced
	Silenced bool `json:"silenced"`
	// Whether the account is currently suspended.
	Suspended bool `json:"suspended"`
	// User-level information about the account.
	Account *Account `json:"account"`
	// The ID of the application that created this account.
	CreatedByApplicationID string `json:"created_by_application_id,omitempty"`
	// The ID of the account that invited this user
	InvitedByAccountID string `json:"invited_by_account_id,omitempty"`
}

AdminAccountInfo models the admin view of an account's details.

swagger:model adminAccountInfo

type AdminEmoji added in v0.6.0

type AdminEmoji struct {
	Emoji
	// The ID of the emoji.
	// example: 01GEM7SFDZ7GZNRXFVZ3X4E4N1
	ID string `json:"id"`
	// True if this emoji has been disabled by an admin action.
	// example: false
	Disabled bool `json:"disabled"`
	// The domain from which the emoji originated. Only defined for remote domains, otherwise key will not be set.
	//
	// example: example.org
	Domain string `json:"domain,omitempty"`
	// Time when the emoji image was last updated.
	// example: 2022-10-05T09:21:26.419Z
	UpdatedAt string `json:"updated_at"`
	// The total file size taken up by the emoji in bytes, including static and animated versions.
	// example: 69420
	TotalFileSize int `json:"total_file_size"`
	// The MIME content type of the emoji.
	// example: image/png
	ContentType string `json:"content_type"`
	// The ActivityPub URI of the emoji.
	// example: https://example.org/emojis/016T5Q3SQKBT337DAKVSKNXXW1
	URI string `json:"uri"`
}

AdminEmoji models the admin view of a custom emoji.

swagger:model adminEmoji

type AdminReport added in v0.7.0

type AdminReport struct {
	// ID of the report.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	ID string `json:"id"`
	// Whether an action has been taken by an admin in response to this report.
	// example: false
	ActionTaken bool `json:"action_taken"`
	// If an action was taken, at what time was this done? (ISO 8601 Datetime)
	// Will be null if not set / no action yet taken.
	// example: 2021-07-30T09:20:25+00:00
	ActionTakenAt *string `json:"action_taken_at"`
	// Under what category was this report created?
	// example: spam
	Category string `json:"category"`
	// Comment submitted when the report was created.
	// Will be empty if no comment was submitted.
	// example: This person has been harassing me.
	Comment string `json:"comment"`
	// Bool to indicate that report should be federated to remote instance.
	// example: true
	Forwarded bool `json:"forwarded"`
	// The date when this report was created (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at"`
	// Time of last action on this report (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	UpdatedAt string `json:"updated_at"`
	// The account that created the report.
	Account *AdminAccountInfo `json:"account"`
	// Account that was reported.
	TargetAccount *AdminAccountInfo `json:"target_account"`
	// The account assigned to handle the report.
	// Null if no account assigned.
	AssignedAccount *AdminAccountInfo `json:"assigned_account"`
	// Account that took admin action (if any).
	// Null if no action (yet) taken.
	ActionTakenByAccount *AdminAccountInfo `json:"action_taken_by_account"`
	// Array of  statuses that were submitted along with this report.
	// Will be empty if no status IDs were submitted with the report.
	Statuses []*Status `json:"statuses"`
	// Array of rule IDs that were submitted along with this report.
	// NOT IMPLEMENTED, will always be empty array.
	Rules []interface{} `json:"rule_ids"`
	// If an action was taken, what comment was made by the admin on the taken action?
	// Will be null if not set / no action yet taken.
	// example: Account was suspended.
	ActionTakenComment *string `json:"action_taken_comment"`
}

AdminReport models the admin view of a report.

swagger:model adminReport

type AdminReportResolveRequest added in v0.7.0

type AdminReportResolveRequest struct {
	// Comment to show to the creator of the report when an admin marks it as resolved.
	ActionTakenComment *string `form:"action_taken_comment" json:"action_taken_comment" xml:"action_taken_comment"`
}

AdminReportResolveRequest can be submitted along with a POST to /api/v1/admin/reports/{id}/resolve

swagger:ignore

type AdminSendTestEmailRequest added in v0.8.0

type AdminSendTestEmailRequest struct {
	// Email address to send the test email to.
	Email string `form:"email" json:"email" xml:"email"`
}

AdminSendTestEmailRequest models a test email send request (woah).

type AdvancedStatusCreateForm

type AdvancedStatusCreateForm struct {
	StatusCreateRequest
	AdvancedVisibilityFlagsForm
}

AdvancedStatusCreateForm wraps the mastodon-compatible status create form along with the GTS advanced visibility settings.

swagger:parameters statusCreate

type AdvancedVisibilityFlagsForm

type AdvancedVisibilityFlagsForm struct {
	// This status will be federated beyond the local timeline(s).
	Federated *bool `form:"federated" json:"federated" xml:"federated"`
	// This status can be boosted/reblogged.
	Boostable *bool `form:"boostable" json:"boostable" xml:"boostable"`
	// This status can be replied to.
	Replyable *bool `form:"replyable" json:"replyable" xml:"replyable"`
	// This status can be liked/faved.
	Likeable *bool `form:"likeable" json:"likeable" xml:"likeable"`
}

AdvancedVisibilityFlagsForm allows a few more advanced flags to be set on new statuses, in addition to the standard mastodon-compatible ones.

swagger:model advancedVisibilityFlagsForm

type Announcement

type Announcement struct {
	// The ID of the announcement.
	// example: 01FC30T7X4TNCZK0TH90QYF3M4
	ID string `json:"id"`
	// The body of the announcement.
	// Should be HTML formatted.
	// example: <p>This is an announcement. No malarky.</p>
	Content string `json:"content"`
	// When the announcement should begin to be displayed (ISO 8601 Datetime).
	// If the announcement has no start time, this will be omitted or empty.
	// example: 2021-07-30T09:20:25+00:00
	StartsAt string `json:"starts_at"`
	// When the announcement should stop being displayed (ISO 8601 Datetime).
	// If the announcement has no end time, this will be omitted or empty.
	// example: 2021-07-30T09:20:25+00:00
	EndsAt string `json:"ends_at"`
	// Announcement doesn't have begin time and end time, but begin day and end day.
	AllDay bool `json:"all_day"`
	// When the announcement was first published (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	PublishedAt string `json:"published_at"`
	// When the announcement was last updated (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	UpdatedAt string `json:"updated_at"`
	// Announcement is 'published', ie., visible to users.
	// Announcements that are not published should be shown only to admins.
	Published bool `json:"published"`
	// Requesting account has seen this announcement.
	Read bool `json:"read"`
	// Mentions this announcement contains.
	Mentions []Mention `json:"mentions"`
	// Statuses contained in this announcement.
	Statuses []Status `json:"statuses"`
	// Tags used in this announcement.
	Tags []Tag `json:"tags"`
	// Emojis used in this announcement.
	Emojis []Emoji `json:"emoji"`
	// Reactions to this announcement.
	Reactions []AnnouncementReaction `json:"reactions"`
}

Announcement models an admin announcement for the instance.

swagger:model announcement

type AnnouncementReaction

type AnnouncementReaction struct {
	// The emoji used for the reaction. Either a unicode emoji, or a custom emoji's shortcode.
	// example: blobcat_uwu
	Name string `json:"name"`
	// The total number of users who have added this reaction.
	// example: 5
	Count int `json:"count"`
	// This reaction belongs to the account viewing it.
	Me bool `json:"me"`
	// Web link to the image of the custom emoji.
	// Empty for unicode emojis.
	// example: https://example.org/custom_emojis/original/blobcat_uwu.png
	URL string `json:"url,omitempty"`
	// Web link to a non-animated image of the custom emoji.
	// Empty for unicode emojis.
	// example: https://example.org/custom_emojis/statuc/blobcat_uwu.png
	StaticURL string `json:"static_url,omitempty"`
}

AnnouncementReaction models a user reaction to an announcement.

swagger:model announcementReaction

type Application

type Application struct {
	// The ID of the application.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	ID string `json:"id,omitempty"`
	// The name of the application.
	// example: Tusky
	Name string `json:"name"`
	// The website associated with the application (url)
	// example: https://tusky.app
	Website string `json:"website,omitempty"`
	// Post-authorization redirect URI for the application (OAuth2).
	// example: https://example.org/callback?some=query
	RedirectURI string `json:"redirect_uri,omitempty"`
	// Client ID associated with this application.
	ClientID string `json:"client_id,omitempty"`
	// Client secret associated with this application.
	ClientSecret string `json:"client_secret,omitempty"`
	// Push API key for this application.
	VapidKey string `json:"vapid_key,omitempty"`
}

Application models an api application.

swagger:model application

type ApplicationCreateRequest

type ApplicationCreateRequest struct {
	// The name of the application.
	//
	// in: formData
	// required: true
	ClientName string `form:"client_name" json:"client_name" xml:"client_name" binding:"required"`
	// Where the user should be redirected after authorization.
	//
	// To display the authorization code to the user instead of redirecting to a web page, use `urn:ietf:wg:oauth:2.0:oob` in this parameter.
	//
	// in: formData
	// required: true
	RedirectURIs string `form:"redirect_uris" json:"redirect_uris" xml:"redirect_uris" binding:"required"`
	// Space separated list of scopes.
	//
	// If no scopes are provided, defaults to `read`.
	//
	// in: formData
	Scopes string `form:"scopes" json:"scopes" xml:"scopes"`
	// A URL to the web page of the app (optional).
	//
	// in: formData
	Website string `form:"website" json:"website" xml:"website"`
}

ApplicationCreateRequest models app create parameters.

swagger:parameters appCreate

type Attachment

type Attachment struct {
	// The ID of the attachment.
	// example: 01FC31DZT1AYWDZ8XTCRWRBYRK
	ID string `json:"id"`
	// The type of the attachment.
	// enum:
	//   - unknown
	//   - image
	//   - gifv
	//   - video
	//   - audio
	// example: image
	Type string `json:"type"`
	// The location of the original full-size attachment.
	// example: https://example.org/fileserver/some_id/attachments/some_id/original/attachment.jpeg
	URL *string `json:"url"`
	// A shorter URL for the attachment.
	// In our case, we just give the URL again since we don't create smaller URLs.
	TextURL string `json:"text_url"`
	// The location of a scaled-down preview of the attachment.
	// example: https://example.org/fileserver/some_id/attachments/some_id/small/attachment.jpeg
	PreviewURL string `json:"preview_url"`
	// The location of the full-size original attachment on the remote server.
	// Only defined for instances other than our own.
	// example: https://some-other-server.org/attachments/original/ahhhhh.jpeg
	RemoteURL *string `json:"remote_url"`
	// The location of a scaled-down preview of the attachment on the remote server.
	// Only defined for instances other than our own.
	// example: https://some-other-server.org/attachments/small/ahhhhh.jpeg
	PreviewRemoteURL *string `json:"preview_remote_url"`
	// Metadata for this attachment.
	Meta MediaMeta `json:"meta,omitempty"`
	// Alt text that describes what is in the media attachment.
	// example: This is a picture of a kitten.
	Description *string `json:"description"`
	// A hash computed by the BlurHash algorithm, for generating colorful preview thumbnails when media has not been downloaded yet.
	// See https://github.com/woltapp/blurhash
	Blurhash string `json:"blurhash,omitempty"`
}

Attachment models a media attachment.

swagger:model attachment

type AttachmentRequest

type AttachmentRequest struct {
	// Media file.
	File *multipart.FileHeader `form:"file" binding:"required"`
	// Description of the media file. Optional.
	// This will be used as alt-text for users of screenreaders etc.
	// example: This is an image of some kittens, they are very cute and fluffy.
	Description string `form:"description"`
	// Focus of the media file. Optional.
	// If present, it should be in the form of two comma-separated floats between -1 and 1.
	// example: -0.5,0.565
	Focus string `form:"focus"`
}

AttachmentRequest models media attachment creation parameters.

swagger: ignore

type AttachmentUpdateRequest

type AttachmentUpdateRequest struct {
	// Description of the media file.
	// This will be used as alt-text for users of screenreaders etc.
	// allowEmptyValue: true
	Description *string `form:"description" json:"description" xml:"description"`
	// Focus of the media file.
	// If present, it should be in the form of two comma-separated floats between -1 and 1.
	// allowEmptyValue: true
	Focus *string `form:"focus" json:"focus" xml:"focus"`
}

AttachmentUpdateRequest models an update request for an attachment.

swagger:ignore

type BlocksResponse

type BlocksResponse struct {
	Accounts   []*Account
	LinkHeader string
}

BlocksResponse wraps a slice of accounts, ready to be serialized, along with the Link header for the previous and next queries, to be returned to the client.

type Card

type Card struct {
	// Location of linked resource.
	// example: https://buzzfeed.com/some/fuckin/buzzfeed/article
	URL string `json:"url"`
	// Title of linked resource.
	// example: Buzzfeed - Is Water Wet?
	Title string `json:"title"`
	// Description of preview.
	// example: Is water wet? We're not sure. In this article, we ask an expert...
	Description string `json:"description"`
	// The type of the preview card.
	// enum:
	// - link
	// - photo
	// - video
	// - rich
	// example: link
	Type string `json:"type"`
	// The author of the original resource.
	// example: weewee@buzzfeed.com
	AuthorName string `json:"author_name"`
	// A link to the author of the original resource.
	// example: https://buzzfeed.com/authors/weewee
	AuthorURL string `json:"author_url"`
	// The provider of the original resource.
	// example: Buzzfeed
	ProviderName string `json:"provider_name"`
	// A link to the provider of the original resource.
	// example: https://buzzfeed.com
	ProviderURL string `json:"provider_url"`
	// HTML to be used for generating the preview card.
	HTML string `json:"html"`
	// Width of preview, in pixels.
	Width int `json:"width"`
	// Height of preview, in pixels.
	Height int `json:"height"`
	// Preview thumbnail.
	// example: https://example.org/fileserver/preview/thumb.jpg
	Image string `json:"image"`
	// Used for photo embeds, instead of custom html.
	EmbedURL string `json:"embed_url"`
	// A hash computed by the BlurHash algorithm, for generating colorful preview thumbnails when media has not been downloaded yet.
	Blurhash string `json:"blurhash"`
}

Card represents a rich preview card that is generated using OpenGraph tags from a URL.

swagger:model card

type Content

type Content struct {
	// MIME content type
	ContentType string
	// ContentLength in bytes
	ContentLength int64
	// Time when the content was last updated.
	ContentUpdated time.Time
	// Actual content
	Content io.ReadCloser
	// Resource URL to forward to if the file can be fetched from the storage directly (e.g signed S3 URL)
	URL *storage.PresignedURL
}

Content wraps everything needed to serve a blob of content (some kind of media) through the API.

type Context

type Context struct {
	// Parents in the thread.
	Ancestors []Status `json:"ancestors"`
	// Children in the thread.
	Descendants []Status `json:"descendants"`
}

Context models the tree around a given status.

swagger:model statusContext

type Conversation

type Conversation struct {

	// Local database ID of the conversation.
	ID string `json:"id"`
	// Participants in the conversation.
	Accounts []Account `json:"accounts"`
	// Is the conversation currently marked as unread?
	Unread bool `json:"unread"`

	// The last status in the conversation, to be used for optional display.
	LastStatus *Status `json:"last_status"`
}

Conversation represents a conversation with "direct message" visibility.

type Domain added in v0.3.7

type Domain struct {
	// The hostname of the domain.
	// example: example.org
	Domain string `form:"domain" json:"domain" validate:"required"`
	// Time at which this domain was suspended. Key will not be present on open domains.
	// example: 2021-07-30T09:20:25+00:00
	SuspendedAt string `json:"suspended_at,omitempty"`
	// Time at which this domain was silenced. Key will not be present on open domains.
	// example: 2021-07-30T09:20:25+00:00
	SilencedAt string `json:"silenced_at,omitempty"`
	// If the domain is blocked, what's the publicly-stated reason for the block.
	// example: they smell
	PublicComment string `form:"public_comment" json:"public_comment,omitempty"`
}

Domain represents a remote domain

swagger:model domain

type DomainBlock

type DomainBlock struct {
	Domain
	// The ID of the domain block.
	// example: 01FBW21XJA09XYX51KV5JVBW0F
	// readonly: true
	ID string `json:"id,omitempty"`
	// Obfuscate the domain name when serving this domain block publicly.
	// A useful anti-harassment tool.
	// example: false
	Obfuscate bool `json:"obfuscate,omitempty"`
	// Private comment for this block, visible to our instance admins only.
	// example: they are poopoo
	PrivateComment string `json:"private_comment,omitempty"`
	// The ID of the subscription that created/caused this domain block.
	// example: 01FBW25TF5J67JW3HFHZCSD23K
	SubscriptionID string `json:"subscription_id,omitempty"`
	// ID of the account that created this domain block.
	// example: 01FBW2758ZB6PBR200YPDDJK4C
	CreatedBy string `json:"created_by,omitempty"`
	// Time at which this block was created (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at,omitempty"`
}

DomainBlock represents a block on one domain

swagger:model domainBlock

type DomainBlockCreateRequest

type DomainBlockCreateRequest struct {
	// A list of domains to block. Only used if import=true is specified.
	Domains *multipart.FileHeader `form:"domains" json:"domains" xml:"domains"`
	// hostname/domain to block
	Domain string `form:"domain" json:"domain" xml:"domain"`
	// whether the domain should be obfuscated when being displayed publicly
	Obfuscate bool `form:"obfuscate" json:"obfuscate" xml:"obfuscate"`
	// private comment for other admins on why the domain was blocked
	PrivateComment string `form:"private_comment" json:"private_comment" xml:"private_comment"`
	// public comment on the reason for the domain block
	PublicComment string `form:"public_comment" json:"public_comment" xml:"public_comment"`
}

DomainBlockCreateRequest is the form submitted as a POST to /api/v1/admin/domain_blocks to create a new block.

swagger:model domainBlockCreateRequest

type Emoji

type Emoji struct {
	// The name of the custom emoji.
	// example: blobcat_uwu
	Shortcode string `json:"shortcode"`
	// Web URL of the custom emoji.
	// example: https://example.org/fileserver/emojis/blogcat_uwu.gif
	URL string `json:"url"`
	// A link to a static copy of the custom emoji.
	// example: https://example.org/fileserver/emojis/blogcat_uwu.png
	StaticURL string `json:"static_url"`
	// Emoji is visible in the emoji picker of the instance.
	// example: true
	VisibleInPicker bool `json:"visible_in_picker"`
	// Used for sorting custom emoji in the picker.
	// example: blobcats
	Category string `json:"category,omitempty"`
}

Emoji represents a custom emoji.

swagger:model emoji

type EmojiCategory added in v0.6.0

type EmojiCategory struct {
	// The ID of the custom emoji category.
	ID string `json:"id"`
	// The name of the custom emoji category.
	Name string `json:"name"`
}

EmojiCategory represents a custom emoji category.

swagger:model emojiCategory

type EmojiCreateRequest

type EmojiCreateRequest struct {
	// Desired shortcode for the emoji, without surrounding colons. This must be unique for the domain.
	// example: blobcat_uwu
	Shortcode string `form:"shortcode" validation:"required"`
	// Image file to use for the emoji. Must be png or gif and no larger than 50kb.
	Image *multipart.FileHeader `form:"image" validation:"required"`
	// Category in which to place the new emoji. Will be uncategorized by default.
	// CategoryName length should not exceed 64 characters.
	CategoryName string `form:"category"`
}

EmojiCreateRequest represents a request to create a custom emoji made through the admin API.

swagger:model emojiCreateRequest

type EmojiUpdateRequest added in v0.6.0

type EmojiUpdateRequest struct {
	// Type of action. One of disable, modify, copy.
	Type EmojiUpdateType `form:"type" json:"type" xml:"type"`
	// Desired shortcode for the emoji, without surrounding colons. This must be unique for the domain.
	// example: blobcat_uwu
	Shortcode *string `form:"shortcode"`
	// Image file to use for the emoji.
	// Must be png or gif and no larger than 50kb.
	Image *multipart.FileHeader `form:"image"`
	// Category in which to place the emoji.
	CategoryName *string `form:"category"`
}

EmojiUpdateRequest represents a request to update a custom emoji, made through the admin API.

swagger:model emojiUpdateRequest

type EmojiUpdateType added in v0.6.0

type EmojiUpdateType string

EmojiUpdateType models an admin update action to take on a custom emoji.

const (
	EmojiUpdateModify  EmojiUpdateType = "modify"  // modify local emoji
	EmojiUpdateDisable EmojiUpdateType = "disable" // disable remote emoji
	EmojiUpdateCopy    EmojiUpdateType = "copy"    // copy remote emoji -> local
)

type FeaturedTag

type FeaturedTag struct {
	// The internal ID of the featured tag in the database.
	ID string `json:"id"`
	// The name of the hashtag being featured.
	Name string `json:"name"`
	// A link to all statuses by a user that contain this hashtag.
	URL string `json:"url"`
	// The number of authored statuses containing this hashtag.
	StatusesCount int `json:"statuses_count"`
	// The timestamp of the last authored status containing this hashtag. (ISO 8601 Datetime)
	LastStatusAt string `json:"last_status_at"`
}

FeaturedTag represents a hashtag that is featured on a profile.

type Field

type Field struct {
	// The key/name of this field.
	// example: pronouns
	Name string `json:"name"`
	// The value of this field.
	// example: they/them
	Value string `json:"value"`
	// If this field has been verified, when did this occur? (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	VerifiedAt string `json:"verified_at,omitempty"`
}

Field represents a name/value pair to display on an account's profile.

swagger:model field

type Filter

type Filter struct {
	// The ID of the filter in the database.
	ID string `json:"id"`
	// The text to be filtered.
	Phrase string `json:"text"`
	// The contexts in which the filter should be applied.
	// Array of String (Enumerable anyOf)
	// 	home = home timeline and lists
	// 	notifications = notifications timeline
	// 	public = public timelines
	// 	thread = expanded thread of a detailed status
	Context []string `json:"context"`
	// Should the filter consider word boundaries?
	WholeWord bool `json:"whole_word"`
	// When the filter should no longer be applied (ISO 8601 Datetime), or null if the filter does not expire
	ExpiresAt string `json:"expires_at,omitempty"`
	// Should matching entities in home and notifications be dropped by the server?
	Irreversible bool `json:"irreversible"`
}

Filter represents a user-defined filter for determining which statuses should not be shown to the user. If whole_word is true , client app should do: Define ‘word constituent character’ for your app. In the official implementation, it’s [A-Za-z0-9_] in JavaScript, and [[:word:]] in Ruby. Ruby uses the POSIX character class (Letter | Mark | Decimal_Number | Connector_Punctuation). If the phrase starts with a word character, and if the previous character before matched range is a word character, its matched range should be treated to not match. If the phrase ends with a word character, and if the next character after matched range is a word character, its matched range should be treated to not match. Please check app/javascript/mastodon/selectors/index.js and app/lib/feed_manager.rb in the Mastodon source code for more details.

type GetContentRequestForm

type GetContentRequestForm struct {
	// AccountID of the content owner
	AccountID string
	// MediaType of the content (should be convertible to a media.MediaType)
	MediaType string
	// MediaSize of the content (should be convertible to a media.MediaSize)
	MediaSize string
	// Filename of the content
	FileName string
}

GetContentRequestForm describes a piece of content desired by the caller of the fileserver API.

type History

type History struct {
	// UNIX timestamp on midnight of the given day (string cast from integer).
	Day string `json:"day"`
	// The counted usage of the tag within that day (string cast from integer).
	Uses string `json:"uses"`
	// The total of accounts using the tag within that day (string cast from integer).
	Accounts string `json:"accounts"`
}

History represents daily usage history of a hashtag.

type HostMeta added in v0.8.0

type HostMeta struct {
	XMLName xml.Name `xml:"XRD"`
	XMLNS   string   `xml:"xmlns,attr"`
	Link    []Link   `xml:"Link"`
}

HostMeta represents a hostmeta document. See: https://www.rfc-editor.org/rfc/rfc6415.html#section-3

swagger:model hostmeta

type InstanceConfigurationAccounts added in v0.5.0

type InstanceConfigurationAccounts struct {
	// Whether or not accounts on this instance are allowed to upload custom CSS for profiles and statuses.
	//
	// example: false
	AllowCustomCSS bool `json:"allow_custom_css"`
	// The maximum number of featured tags allowed for each account.
	// Currently not implemented, so this is hardcoded to 10.
	MaxFeaturedTags int `json:"max_featured_tags"`
}

InstanceConfigurationAccounts models instance account config parameters.

swagger:model instanceConfigurationAccounts

type InstanceConfigurationEmojis added in v0.6.0

type InstanceConfigurationEmojis struct {
	// Max allowed emoji image size in bytes.
	//
	// example: 51200
	EmojiSizeLimit int `json:"emoji_size_limit"`
}

InstanceConfigurationEmojis models instance emoji config parameters.

type InstanceConfigurationMediaAttachments added in v0.3.7

type InstanceConfigurationMediaAttachments struct {
	// List of mime types that it's possible to upload to this instance.
	//
	// example: ["image/jpeg","image/gif"]
	SupportedMimeTypes []string `json:"supported_mime_types"`
	// Max allowed image size in bytes
	//
	// example: 2097152
	ImageSizeLimit int `json:"image_size_limit"`
	// Max allowed image size in pixels as height*width.
	//
	// GtS doesn't set a limit on this, but for compatibility
	// we give Mastodon's 4096x4096px value here.
	//
	// example: 16777216
	ImageMatrixLimit int `json:"image_matrix_limit"`
	// Max allowed video size in bytes
	//
	// example: 10485760
	VideoSizeLimit int `json:"video_size_limit"`
	// Max allowed video frame rate.
	//
	// example: 60
	VideoFrameRateLimit int `json:"video_frame_rate_limit"`
	// Max allowed video size in pixels as height*width.
	//
	// GtS doesn't set a limit on this, but for compatibility
	// we give Mastodon's 4096x4096px value here.
	//
	// example: 16777216
	VideoMatrixLimit int `json:"video_matrix_limit"`
}

InstanceConfigurationMediaAttachments models instance media attachment config parameters.

swagger:model instanceConfigurationMediaAttachments

type InstanceConfigurationPolls added in v0.3.7

type InstanceConfigurationPolls struct {
	// Number of options permitted in a poll on this instance.
	//
	// example: 4
	MaxOptions int `json:"max_options"`
	// Number of characters allowed per option in the poll.
	//
	// example: 50
	MaxCharactersPerOption int `json:"max_characters_per_option"`
	// Minimum expiration time of the poll in seconds.
	//
	// example: 300
	MinExpiration int `json:"min_expiration"`
	// Maximum expiration time of the poll in seconds.
	//
	// example: 2629746
	MaxExpiration int `json:"max_expiration"`
}

InstanceConfigurationPolls models instance poll config parameters.

swagger:model instanceConfigurationPolls

type InstanceConfigurationStatuses added in v0.3.7

type InstanceConfigurationStatuses struct {
	// Maximum allowed length of a post on this instance, in characters.
	//
	// example: 5000
	MaxCharacters int `json:"max_characters"`
	// Max number of attachments allowed on a status.
	//
	// example: 4
	MaxMediaAttachments int `json:"max_media_attachments"`
	// Amount of characters clients should assume a url takes up.
	//
	// example: 25
	CharactersReservedPerURL int `json:"characters_reserved_per_url"`
	// List of mime types that it's possible to use for statuses on this instance.
	//
	// example: ["text/plain","text/markdown"]
	SupportedMimeTypes []string `json:"supported_mime_types,omitempty"`
}

InstanceConfigurationStatuses models instance status config parameters.

swagger:model instanceConfigurationStatuses

type InstanceSettingsUpdateRequest

type InstanceSettingsUpdateRequest struct {
	// Title to use for the instance. Max 40 characters.
	Title *string `form:"title" json:"title" xml:"title"`
	// Username for the instance contact account. Must be the username of an existing admin.
	ContactUsername *string `form:"contact_username" json:"contact_username" xml:"contact_username"`
	// Email for reaching the instance administrator(s).
	ContactEmail *string `form:"contact_email" json:"contact_email" xml:"contact_email"`
	// Short description of the instance, max 500 chars. HTML formatting accepted.
	ShortDescription *string `form:"short_description" json:"short_description" xml:"short_description"`
	// Longer description of the instance, max 5,000 chars. HTML formatting accepted.
	Description *string `form:"description" json:"description" xml:"description"`
	// Terms and conditions of the instance, max 5,000 chars. HTML formatting accepted.
	Terms *string `form:"terms" json:"terms" xml:"terms"`
	// Image to use as the instance thumbnail.
	Avatar *multipart.FileHeader `form:"thumbnail" json:"thumbnail" xml:"thumbnail"`
	// Image description for the instance avatar.
	AvatarDescription *string `form:"thumbnail_description" json:"thumbnail_description" xml:"thumbnail_description"`
	// Image to use as the instance header.
	Header *multipart.FileHeader `form:"header" json:"header" xml:"header"`
}

InstanceSettingsUpdateRequest models an instance update request.

swagger:ignore

type InstanceV1 added in v0.7.0

type InstanceV1 struct {
	// The URI of the instance.
	// example: https://gts.example.org
	URI string `json:"uri,omitempty"`
	// The domain of accounts on this instance.
	// This will not necessarily be the same as
	// simply the Host part of the URI.
	// example: example.org
	AccountDomain string `json:"account_domain,omitempty"`
	// The title of the instance.
	// example: GoToSocial Example Instance
	Title string `json:"title,omitempty"`
	// Description of the instance.
	//
	// Should be HTML formatted, but might be plaintext.
	//
	// This should be displayed on the 'about' page for an instance.
	Description string `json:"description"`
	// A shorter description of the instance.
	//
	// Should be HTML formatted, but might be plaintext.
	//
	// This should be displayed on the instance splash/landing page.
	ShortDescription string `json:"short_description"`
	// An email address that may be used for inquiries.
	// example: admin@example.org
	Email string `json:"email"`
	// The version of GoToSocial installed on the instance.
	//
	// This will contain at least a semantic version number.
	//
	// It may also contain, after a space, the short git commit ID of the running software.
	//
	// example: 0.1.1 cb85f65
	Version string `json:"version"`
	// Primary language of the instance.
	// example: en
	Languages []string `json:"languages,omitempty"`
	// New account registrations are enabled on this instance.
	Registrations bool `json:"registrations"`
	// New account registrations require admin approval.
	ApprovalRequired bool `json:"approval_required"`
	// Invites are enabled on this instance.
	InvitesEnabled bool `json:"invites_enabled"`
	// Configuration object containing values about status limits etc.
	// This key/value will be omitted for remote instances.
	Configuration InstanceV1Configuration `json:"configuration,omitempty"`
	// URLs of interest for client applications.
	URLs InstanceV1URLs `json:"urls,omitempty"`
	// Statistics about the instance: number of posts, accounts, etc.
	Stats map[string]int `json:"stats,omitempty"`
	// URL of the instance avatar/banner image.
	// example: https://example.org/files/instance/thumbnail.jpeg
	Thumbnail string `json:"thumbnail"`
	// MIME type of the instance thumbnail.
	// example: image/png
	ThumbnailType string `json:"thumbnail_type,omitempty"`
	// Description of the instance thumbnail.
	// example: picture of a cute lil' friendly sloth
	ThumbnailDescription string `json:"thumbnail_description,omitempty"`
	// Contact account for the instance.
	ContactAccount *Account `json:"contact_account,omitempty"`
	// Maximum allowed length of a post on this instance, in characters.
	//
	// This is provided for compatibility with Tusky and other apps.
	//
	// example: 5000
	MaxTootChars uint `json:"max_toot_chars"`
}

InstanceV1 models information about this instance.

swagger:model instanceV1

type InstanceV1Configuration added in v0.7.0

type InstanceV1Configuration struct {
	// Instance configuration pertaining to status limits.
	Statuses InstanceConfigurationStatuses `json:"statuses"`
	// Instance configuration pertaining to media attachment types + size limits.
	MediaAttachments InstanceConfigurationMediaAttachments `json:"media_attachments"`
	// Instance configuration pertaining to poll limits.
	Polls InstanceConfigurationPolls `json:"polls"`
	// Instance configuration pertaining to accounts.
	Accounts InstanceConfigurationAccounts `json:"accounts"`
	// Instance configuration pertaining to emojis.
	Emojis InstanceConfigurationEmojis `json:"emojis"`
}

InstanceV1Configuration models instance configuration parameters.

swagger:model instanceV1Configuration

type InstanceV1URLs added in v0.7.0

type InstanceV1URLs struct {
	// Websockets address for status and notification streaming.
	// example: wss://example.org
	StreamingAPI string `json:"streaming_api"`
}

InstanceV1URLs models instance-relevant URLs for client application consumption.

swagger:model instanceV1URLs

type InstanceV2 added in v0.7.0

type InstanceV2 struct {
	// The domain of the instance.
	// example: gts.example.org
	Domain string `json:"domain"`
	// The domain of accounts on this instance.
	// This will not necessarily be the same as
	// domain.
	// example: example.org
	AccountDomain string `json:"account_domain"`
	// The title of the instance.
	// example: GoToSocial Example Instance
	Title string `json:"title"`
	// The version of GoToSocial installed on the instance.
	//
	// This will contain at least a semantic version number.
	//
	// It may also contain, after a space, the short git commit ID of the running software.
	//
	// example: 0.1.1 cb85f65
	Version string `json:"version"`
	// The URL for the source code of the software running on this instance, in keeping with AGPL license requirements.
	// example: https://github.com/superseriousbusiness/gotosocial
	SourceURL string `json:"source_url"`
	// Description of the instance.
	//
	// Should be HTML formatted, but might be plaintext.
	//
	// This should be displayed on the 'about' page for an instance.
	Description string `json:"description"`
	// Basic anonymous usage data for this instance.
	Usage InstanceV2Usage `json:"usage"`
	// An image used to represent this instance.
	Thumbnail InstanceV2Thumbnail `json:"thumbnail"`
	// Primary languages of the instance + moderators/admins.
	// example: ["en"]
	Languages []string `json:"languages"`
	// Configured values and limits for this instance.
	Configuration InstanceV2Configuration `json:"configuration"`
	// Information about registering for this instance.
	Registrations InstanceV2Registrations `json:"registrations"`
	//  Hints related to contacting a representative of the instance.
	Contact InstanceV2Contact `json:"contact"`
	// An itemized list of rules for this website.
	// Currently not implemented (will always be empty array).
	Rules []interface{} `json:"rules"`
}

InstanceV2 models information about this instance.

swagger:model instanceV2

type InstanceV2Configuration added in v0.7.0

type InstanceV2Configuration struct {
	// URLs of interest for clients apps.
	URLs InstanceV2URLs `json:"urls"`
	// Limits related to accounts.
	Accounts InstanceConfigurationAccounts `json:"accounts"`
	// Limits related to authoring statuses.
	Statuses InstanceConfigurationStatuses `json:"statuses"`
	// Hints for which attachments will be accepted.
	MediaAttachments InstanceConfigurationMediaAttachments `json:"media_attachments"`
	// Limits related to polls.
	Polls InstanceConfigurationPolls `json:"polls"`
	// Hints related to translation.
	Translation InstanceV2ConfigurationTranslation `json:"translation"`
	// Instance configuration pertaining to emojis.
	Emojis InstanceConfigurationEmojis `json:"emojis"`
}

Configured values and limits for this instance.

swagger:model instanceV2Configuration

type InstanceV2ConfigurationTranslation added in v0.7.0

type InstanceV2ConfigurationTranslation struct {
	// Whether the Translations API is available on this instance.
	// Not implemented so this value is always false.
	Enabled bool `json:"enabled"`
}

Hints related to translation.

swagger:model instanceV2ConfigurationTranslation

type InstanceV2Contact added in v0.7.0

type InstanceV2Contact struct {
	// An email address that can be messaged regarding inquiries or issues.
	// Empty string if no email address set.
	// example: someone@example.org
	Email string `json:"email"`
	// An account that can be contacted regarding inquiries or issues.
	// Key/value not present if no contact account set.
	Account *Account `json:"account,omitempty"`
}

Hints related to contacting a representative of the instance.

swagger:model instanceV2Contact

type InstanceV2Registrations added in v0.7.0

type InstanceV2Registrations struct {
	// Whether registrations are enabled.
	// example: false
	Enabled bool `json:"enabled"`
	// Whether registrations require moderator approval.
	// example: true
	ApprovalRequired bool `json:"approval_required"`
	// A custom message (html string) to be shown when registrations are closed.
	// Value will be null if no message is set.
	// example: <p>Registrations are currently closed on example.org because of spam bots!</p>
	Message *string `json:"message"`
}

Information about registering for this instance.

swagger:model instanceV2Registrations

type InstanceV2Thumbnail added in v0.7.0

type InstanceV2Thumbnail struct {
	// The URL for the thumbnail image.
	// example: https://example.org/fileserver/01BPSX2MKCRVMD4YN4D71G9CP5/attachment/original/01H88X0KQ2DFYYDSWYP93VDJZA.png
	URL string `json:"url"`
	// MIME type of the instance thumbnail.
	// Key/value not set if thumbnail image type unknown.
	// example: image/png
	Type string `json:"thumbnail_type,omitempty"`
	// Description of the instance thumbnail.
	// Key/value not set if no description available.
	// example: picture of a cute lil' friendly sloth
	Description string `json:"thumbnail_description,omitempty"`
	// A hash computed by the BlurHash algorithm, for generating colorful preview thumbnails when media has not been downloaded yet.
	// Key/value not set if no blurhash available.
	// example: UeKUpFxuo~R%0nW;WCnhF6RjaJt757oJodS$
	Blurhash string `json:"blurhash,omitempty"`
	// Links to scaled resolution images, for high DPI screens.
	// Key/value not set if no extra versions available.
	Versions *InstanceV2ThumbnailVersions `json:"versions,omitempty"`
}

An image used to represent this instance.

swagger:model instanceV2Thumbnail

type InstanceV2ThumbnailVersions added in v0.7.0

type InstanceV2ThumbnailVersions struct {
	// The URL for the thumbnail image at 1x resolution.
	// Key/value not set if scaled versions not available.
	Size1URL string `json:"@1x,omitempty"`
	// The URL for the thumbnail image at 2x resolution.
	// Key/value not set if scaled versions not available.
	Size2URL string `json:"@2x,omitempty"`
}

Links to scaled resolution images, for high DPI screens.

swagger:model instanceV2ThumbnailVersions

type InstanceV2URLs added in v0.7.0

type InstanceV2URLs struct {
	// Websockets address for status and notification streaming.
	// example: wss://example.org
	Streaming string `json:"streaming"`
}

InstanceV2URLs models instance-relevant URLs for client application consumption.

swagger:model instanceV2URLs

type InstanceV2Usage added in v0.7.0

type InstanceV2Usage struct {
	Users InstanceV2Users `json:"users"`
}

Usage data for this instance.

swagger:model instanceV2Usage

type InstanceV2Users added in v0.7.0

type InstanceV2Users struct {
	// The number of active users in the past 4 weeks.
	// Currently not implemented: will always be 0.
	// example: 0
	ActiveMonth int `json:"active_month"`
}

Usage data related to users on this instance.

swagger:model instanceV2Users

type Link struct {
	Rel      string `json:"rel" xml:"rel,attr"`
	Type     string `json:"type,omitempty" xml:"type,attr,omitempty"`
	Href     string `json:"href,omitempty" xml:"href,attr,omitempty"`
	Template string `json:"template,omitempty" xml:"template,attr,omitempty"`
}

Link represents one 'link' in a slice of links returned from a lookup request.

See https://webfinger.net/ and https://www.rfc-editor.org/rfc/rfc6415.html#section-3.1

type List

type List struct {
	// The internal database ID of the list.
	ID string `json:"id"`
	// The user-defined title of the list.
	Title string `json:"title"`
	// followed = Show replies to any followed user
	//	list = Show replies to members of the list
	//	none = Show replies to no one
	RepliesPolicy string `json:"replies_policy"`
}

List represents a list of some users that the authenticated user follows.

type Marker

type Marker struct {
	// Information about the user's position in the home timeline.
	Home *TimelineMarker `json:"home"`
	// Information about the user's position in their notifications.
	Notifications *TimelineMarker `json:"notifications"`
}

Marker represents the last read position within a user's timelines.

type MediaCleanupRequest added in v0.3.4

type MediaCleanupRequest struct {
	// Number of days of remote media to keep. Native values will be treated as 0.
	// If value is not specified, the value of media-remote-cache-days in the server config will be used.
	RemoteCacheDays *int `form:"remote_cache_days" json:"remote_cache_days" xml:"remote_cache_days"`
}

MediaCleanupRequest models admin media cleanup parameters

swagger:parameters mediaCleanup

type MediaDimensions

type MediaDimensions struct {
	// Width of the media in pixels.
	// Not set for audio.
	// example: 1920
	Width int `json:"width,omitempty"`
	// Height of the media in pixels.
	// Not set for audio.
	// example: 1080
	Height int `json:"height,omitempty"`
	// Framerate of the media.
	// Only set for video and gifs.
	// example: 30
	FrameRate string `json:"frame_rate,omitempty"`
	// Duration of the media in seconds.
	// Only set for video and audio.
	// example: 5.43
	Duration float32 `json:"duration,omitempty"`
	// Bitrate of the media in bits per second.
	// example: 1000000
	Bitrate int `json:"bitrate,omitempty"`
	// Size of the media, in the format `[width]x[height]`.
	// Not set for audio.
	// example: 1920x1080
	Size string `json:"size,omitempty"`
	// Aspect ratio of the media.
	// Equal to width / height.
	// example: 1.777777778
	Aspect float32 `json:"aspect,omitempty"`
}

MediaDimensions models detailed properties of a piece of media.

swagger:model mediaDimensions

type MediaFocus

type MediaFocus struct {
	// x position of the focus
	// should be between -1 and 1
	X float32 `json:"x"`
	// y position of the focus
	// should be between -1 and 1
	Y float32 `json:"y"`
}

MediaFocus models the focal point of a piece of media.

swagger:model mediaFocus

type MediaMeta

type MediaMeta struct {
	// Dimensions of the original media.
	Original MediaDimensions `json:"original"`
	// Dimensions of the thumbnail/small version of the media.
	Small MediaDimensions `json:"small,omitempty"`
	// Focus data for the media.
	Focus *MediaFocus `json:"focus,omitempty"`
}

MediaMeta models media metadata. This can be metadata about an image, an audio file, video, etc.

swagger:model mediaMeta

type Mention

type Mention struct {
	// The ID of the mentioned account.
	// example: 01FBYJHQWQZAVWFRK9PDYTKGMB
	ID string `json:"id"`
	// The username of the mentioned account.
	// example: some_user
	Username string `json:"username"`
	// The web URL of the mentioned account's profile.
	// example: https://example.org/@some_user
	URL string `json:"url"`
	// The account URI as discovered via webfinger.
	// Equal to username for local users, or username@domain for remote users.
	// example: some_user@example.org
	Acct string `json:"acct"`
}

Mention represents a mention of another account.

type NodeInfoServices

type NodeInfoServices struct {
	Inbound  []string `json:"inbound"`
	Outbound []string `json:"outbound"`
}

NodeInfoServices represents inbound and outbound services that this node offers connections to.

type NodeInfoSoftware

type NodeInfoSoftware struct {
	// example: gotosocial
	Name string `json:"name"`
	// example: 0.1.2 1234567
	Version string `json:"version"`
}

NodeInfoSoftware represents the name and version number of the software of this node.

type NodeInfoUsage

type NodeInfoUsage struct {
	Users      NodeInfoUsers `json:"users"`
	LocalPosts int           `json:"localPosts"`
}

NodeInfoUsage represents usage information about this server, such as number of users.

type NodeInfoUsers

type NodeInfoUsers struct {
	Total int `json:"total"`
}

NodeInfoUsers represents aggregate information about the users on the server.

type Nodeinfo

type Nodeinfo struct {
	// The schema version
	// example: 2.0
	Version string `json:"version"`
	// Metadata about server software in use.
	Software NodeInfoSoftware `json:"software"`
	// The protocols supported on this server.
	Protocols []string `json:"protocols"`
	// The third party sites this server can connect to via their application API.
	Services NodeInfoServices `json:"services"`
	// Whether this server allows open self-registration.
	// example: false
	OpenRegistrations bool `json:"openRegistrations"`
	// Usage statistics for this server.
	Usage NodeInfoUsage `json:"usage"`
	// Free form key value pairs for software specific values. Clients should not rely on any specific key present.
	Metadata map[string]interface{} `json:"metadata"`
}

Nodeinfo represents a version 2.1 or version 2.0 nodeinfo schema. See: https://nodeinfo.diaspora.software/schema.html

swagger:model nodeinfo

type Notification

type Notification struct {

	// The id of the notification in the database.
	ID string `json:"id"`
	// The type of event that resulted in the notification.
	// 	follow = Someone followed you
	// 	follow_request = Someone requested to follow you
	// 	mention = Someone mentioned you in their status
	// 	reblog = Someone boosted one of your statuses
	// 	favourite = Someone favourited one of your statuses
	// 	poll = A poll you have voted in or created has ended
	// 	status = Someone you enabled notifications for has posted a status
	Type string `json:"type"`
	// The timestamp of the notification (ISO 8601 Datetime)
	CreatedAt string `json:"created_at"`
	// The account that performed the action that generated the notification.
	Account *Account `json:"account"`

	// Status that was the object of the notification, e.g. in mentions, reblogs, favourites, or polls.
	Status *Status `json:"status,omitempty"`
}

Notification represents a notification of an event relevant to the user.

swagger:model notification

func (*Notification) GetAccountID added in v0.3.5

func (n *Notification) GetAccountID() string

func (*Notification) GetBoostOfAccountID added in v0.3.5

func (n *Notification) GetBoostOfAccountID() string

func (*Notification) GetBoostOfID added in v0.3.5

func (n *Notification) GetBoostOfID() string

func (*Notification) GetID added in v0.3.5

func (n *Notification) GetID() string

type OAuthAuthorize

type OAuthAuthorize struct {
	// Forces the user to re-login, which is necessary for authorizing with multiple accounts from the same instance.
	ForceLogin string `form:"force_login" json:"force_login"`
	// Should be set equal to `code`.
	ResponseType string `form:"response_type" json:"response_type"`
	// Client ID, obtained during app registration.
	ClientID string `form:"client_id" json:"client_id"`
	// Set a URI to redirect the user to.
	// If this parameter is set to urn:ietf:wg:oauth:2.0:oob then the authorization code will be shown instead.
	// Must match one of the redirect URIs declared during app registration.
	RedirectURI string `form:"redirect_uri" json:"redirect_uri"`
	// List of requested OAuth scopes, separated by spaces (or by pluses, if using query parameters).
	// Must be a subset of scopes declared during app registration. If not provided, defaults to read.
	Scope string `form:"scope" json:"scope"`
	// State is used by the application to store request-specific data and/or prevent CSRF attacks.
	// The authorization server must return the unmodified state value back to the application.
	// See https://www.oauth.com/oauth2-servers/authorization/the-authorization-request/
	State string `form:"state" json:"state"`
}

OAuthAuthorize represents a request sent to https://example.org/oauth/authorize

type PageableResponse added in v0.6.0

type PageableResponse struct {
	Items      []interface{}
	LinkHeader string
	NextLink   string
	PrevLink   string
}

PageableResponse wraps a slice of items, ready to be serialized, along with the Link header for the previous and next queries / pages, to be returned to the client.

type PasswordChangeRequest

type PasswordChangeRequest struct {
	// User's previous password.
	//
	// in: formData
	// required: true
	OldPassword string `form:"old_password" json:"old_password" xml:"old_password" validation:"required"`
	// Desired new password.
	// If the password does not have high enough entropy, it will be rejected.
	// See https://github.com/wagslane/go-password-validator
	//
	// in: formData
	// required: true
	NewPassword string `form:"new_password" json:"new_password" xml:"new_password" validation:"required"`
}

PasswordChangeRequest models user password change parameters.

swagger:parameters userPasswordChange

type Poll

type Poll struct {
	// The ID of the poll in the database.
	// example: 01FBYKMD1KBMJ0W6JF1YZ3VY5D
	ID string `json:"id"`
	// When the poll ends. (ISO 8601 Datetime), or null if the poll does not end
	ExpiresAt string `json:"expires_at,omitempty"`
	// Is the poll currently expired?
	Expired bool `json:"expired"`
	// Does the poll allow multiple-choice answers?
	Multiple bool `json:"multiple"`
	// How many votes have been received.
	VotesCount int `json:"votes_count"`
	// How many unique accounts have voted on a multiple-choice poll. Null if multiple is false.
	VotersCount int `json:"voters_count,omitempty"`
	// When called with a user token, has the authorized user voted?
	Voted bool `json:"voted,omitempty"`
	// When called with a user token, which options has the authorized user chosen? Contains an array of index values for options.
	OwnVotes []int `json:"own_votes,omitempty"`
	// Possible answers for the poll.
	Options []PollOptions `json:"options"`
	// Custom emoji to be used for rendering poll options.
	Emojis []Emoji `json:"emojis"`
}

Poll represents a poll attached to a status.

swagger:model poll

type PollOptions

type PollOptions struct {
	// The text value of the poll option. String.
	Title string `json:"title"`
	// The number of received votes for this option.
	// Number, or null if results are not published yet.
	VotesCount int `json:"votes_count,omitempty"`
}

PollOptions represents the current vote counts for different poll options.

swagger:model pollOptions

type PollRequest

type PollRequest struct {
	// Array of possible answers.
	// If provided, media_ids cannot be used, and poll[expires_in] must be provided.
	// name: poll[options]
	Options []string `form:"options" json:"options" xml:"options"`
	// Duration the poll should be open, in seconds.
	// If provided, media_ids cannot be used, and poll[options] must be provided.
	ExpiresIn int `form:"expires_in" json:"expires_in" xml:"expires_in"`
	// Allow multiple choices on this poll.
	Multiple bool `form:"multiple" json:"multiple" xml:"multiple"`
	// Hide vote counts until the poll ends.
	HideTotals bool `form:"hide_totals" json:"hide_totals" xml:"hide_totals"`
}

PollRequest models a request to create a poll.

swagger:parameters createStatus

type Preferences

type Preferences struct {
	// Default visibility for new posts.
	// 	public = Public post
	// 	unlisted = Unlisted post
	// 	private = Followers-only post
	// 	direct = Direct post
	PostingDefaultVisibility string `json:"posting:default:visibility"`
	// Default sensitivity flag for new posts.
	PostingDefaultSensitive bool `json:"posting:default:sensitive"`
	// Default language for new posts. (ISO 639-1 language two-letter code), or null
	PostingDefaultLanguage string `json:"posting:default:language,omitempty"`
	// Whether media attachments should be automatically displayed or blurred/hidden.
	// 	default = Hide media marked as sensitive
	// 	show_all = Always show all media by default, regardless of sensitivity
	// 	hide_all = Always hide all media by default, regardless of sensitivity
	ReadingExpandMedia string `json:"reading:expand:media"`
	// Whether CWs should be expanded by default.
	ReadingExpandSpoilers bool `json:"reading:expand:spoilers"`
}

Preferences represents a user's preferences.

type PushSubscription

type PushSubscription struct {
	// The id of the push subscription in the database.
	ID string `json:"id"`
	// Where push alerts will be sent to.
	Endpoint string `json:"endpoint"`
	// The streaming server's VAPID key.
	ServerKey string `json:"server_key"`
	// Which alerts should be delivered to the endpoint.
	Alerts *PushSubscriptionAlerts `json:"alerts"`
}

PushSubscription represents a subscription to the push streaming server.

type PushSubscriptionAlerts

type PushSubscriptionAlerts struct {
	// Receive a push notification when someone has followed you?
	Follow bool `json:"follow"`
	// Receive a push notification when a status you created has been favourited by someone else?
	Favourite bool `json:"favourite"`
	// Receive a push notification when someone else has mentioned you in a status?
	Mention bool `json:"mention"`
	// Receive a push notification when a status you created has been boosted by someone else?
	Reblog bool `json:"reblog"`
	// Receive a push notification when a poll you voted in or created has ended?
	Poll bool `json:"poll"`
}

PushSubscriptionAlerts represents the specific alerts that this push subscription will give.

type Relationship

type Relationship struct {
	// The account id.
	// example: 01FBW9XGEP7G6K88VY4S9MPE1R
	ID string `json:"id"`
	// You are following this account.
	Following bool `json:"following"`
	// You are seeing reblogs/boosts from this account in your home timeline.
	ShowingReblogs bool `json:"showing_reblogs"`
	// You are seeing notifications when this account posts.
	Notifying bool `json:"notifying"`
	// This account follows you.
	FollowedBy bool `json:"followed_by"`
	// You are blocking this account.
	Blocking bool `json:"blocking"`
	// This account is blocking you.
	BlockedBy bool `json:"blocked_by"`
	// You are muting this account.
	Muting bool `json:"muting"`
	// You are muting notifications from this account.
	MutingNotifications bool `json:"muting_notifications"`
	// You have requested to follow this account, and the request is pending.
	Requested bool `json:"requested"`
	// You are blocking this account's domain.
	DomainBlocking bool `json:"domain_blocking"`
	// You are featuring this account on your profile.
	Endorsed bool `json:"endorsed"`
	// Your note on this account.
	Note string `json:"note"`
}

Relationship represents a relationship between accounts.

swagger:model accountRelationship

type Report added in v0.7.0

type Report struct {
	// ID of the report.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	ID string `json:"id"`
	// The date when this report was created (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at"`
	// Whether an action has been taken by an admin in response to this report.
	// example: false
	ActionTaken bool `json:"action_taken"`
	// If an action was taken, at what time was this done? (ISO 8601 Datetime)
	// Will be null if not set / no action yet taken.
	// example: 2021-07-30T09:20:25+00:00
	ActionTakenAt *string `json:"action_taken_at"`
	// If an action was taken, what comment was made by the admin on the taken action?
	// Will be null if not set / no action yet taken.
	// example: Account was suspended.
	ActionTakenComment *string `json:"action_taken_comment"`
	// Under what category was this report created?
	// example: spam
	Category string `json:"category"`
	// Comment submitted when the report was created.
	// Will be empty if no comment was submitted.
	// example: This person has been harassing me.
	Comment string `json:"comment"`
	// Bool to indicate that report should be federated to remote instance.
	// example: true
	Forwarded bool `json:"forwarded"`
	// Array of IDs of statuses that were submitted along with this report.
	// Will be empty if no status IDs were submitted.
	// example: ["01GPBN5YDY6JKBWE44H7YQBDCQ","01GPBN65PDWSBPWVDD0SQCFFY3"]
	StatusIDs []string `json:"status_ids"`
	// Array of rule IDs that were submitted along with this report.
	// Will be empty if no rule IDs were submitted.
	// example: [1, 2]
	RuleIDs []int `json:"rule_ids"`
	// Account that was reported.
	TargetAccount *Account `json:"target_account"`
}

Report models a moderation report submitted to the instance, either via the client API or via the federated API.

swagger:model report

type ReportCreateRequest added in v0.7.0

type ReportCreateRequest struct {
	// ID of the account to report.
	// example: 01GPE75FXSH2EGFBF85NXPH3KP
	// in: formData
	// required: true
	AccountID string `form:"account_id" json:"account_id" xml:"account_id"`
	// IDs of statuses to attach to the report to provide additional context.
	// example: ["01GPE76N4SBVRZ8K24TW51ZZQ4","01GPE76WN9JZE62EPT3Q9FRRD4"]
	// in: formData
	StatusIDs []string `form:"status_ids[]" json:"status_ids" xml:"status_ids"`
	// The reason for the report. Default maximum of 1000 characters.
	// example: Anti-Blackness, transphobia.
	// in: formData
	Comment string `form:"comment" json:"comment" xml:"comment"`
	// If the account is remote, should the report be forwarded to the remote admin?
	// example: true
	// default: false
	// in: formData
	Forward bool `form:"forward" json:"forward" xml:"forward"`
	// Specify if the report is due to spam, violation of enumerated instance rules, or some other reason.
	// Currently only 'other' is supported.
	// example: other
	// default: other
	// in: formData
	Category string `form:"category" json:"category" xml:"category"`
	// IDs of rules on this instance which have been broken according to the reporter.
	// This is currently not supported, provided only for API compatibility.
	// example: [1, 2, 3]
	// in: formData
	RuleIDs []int `form:"rule_ids[]" json:"rule_ids" xml:"rule_ids"`
}

ReportCreateRequest models user report creation parameters.

swagger:parameters reportCreate

type Results

type Results struct {
	// Accounts which match the given query
	Accounts []Account `json:"accounts"`
	// Statuses which match the given query
	Statuses []Status `json:"statuses"`
	// Hashtags which match the given query
	Hashtags []Tag `json:"hashtags"`
}

Results represents the results of a search.

type ScheduledStatus

type ScheduledStatus struct {
	ID               string        `json:"id"`
	ScheduledAt      string        `json:"scheduled_at"`
	Params           *StatusParams `json:"params"`
	MediaAttachments []Attachment  `json:"media_attachments"`
}

ScheduledStatus represents a status that will be published at a future scheduled date.

type SearchQuery

type SearchQuery struct {
	// If type is `statuses`, then statuses returned will be authored only by this account.
	//
	// in: query
	AccountID string `json:"account_id"`
	// Return results *older* than this id.
	//
	// The entry with this ID will not be included in the search results.
	// in: query
	MaxID string `json:"max_id"`
	// Return results *newer* than this id.
	//
	// The entry with this ID will not be included in the search results.
	// in: query
	MinID string `json:"min_id"`
	// Type of the search query to perform.
	//
	// Must be one of: `accounts`, `hashtags`, `statuses`.
	//
	// enum:
	// - accounts
	// - hashtags
	// - statuses
	// required: true
	// in: query
	Type string `json:"type"`
	// Filter out tags that haven't been reviewed and approved by an instance admin.
	//
	// default: false
	// in: query
	ExcludeUnreviewed bool `json:"exclude_unreviewed"`
	// String to use as a search query.
	//
	// For accounts, this should be in the format `@someaccount@some.instance.com`, or the format `https://some.instance.com/@someaccount`
	//
	// For a status, this can be in the format: `https://some.instance.com/@someaccount/SOME_ID_OF_A_STATUS`
	//
	// required: true
	// in: query
	Query string `json:"q"`
	// Attempt to resolve the query by performing a remote webfinger lookup, if the query includes a remote host.
	// default: false
	Resolve bool `json:"resolve"`
	// Maximum number of results to load, per type.
	// default: 20
	// minimum: 1
	// maximum: 40
	// in: query
	Limit int `json:"limit"`
	// Offset for paginating search results.
	//
	// default: 0
	// in: query
	Offset int `json:"offset"`
	// Only include accounts that the searching account is following.
	// default: false
	// in: query
	Following bool `json:"following"`
}

SearchQuery models a search request.

swagger:parameters searchGet

type SearchResult

type SearchResult struct {
	Accounts []Account `json:"accounts"`
	Statuses []Status  `json:"statuses"`
	Hashtags []Tag     `json:"hashtags"`
}

SearchResult models a search result.

swagger:model searchResult

type Source

type Source struct {
	// The default post privacy to be used for new statuses.
	//    public = Public post
	//    unlisted = Unlisted post
	//    private = Followers-only post
	//    direct = Direct post
	Privacy Visibility `json:"privacy"`
	// Whether new statuses should be marked sensitive by default.
	Sensitive bool `json:"sensitive"`
	// The default posting language for new statuses.
	Language string `json:"language"`
	// The default posting content type for new statuses.
	StatusContentType string `json:"status_content_type"`
	// Profile bio.
	Note string `json:"note"`
	// Metadata about the account.
	Fields []Field `json:"fields"`
	// The number of pending follow requests.
	FollowRequestsCount int `json:"follow_requests_count"`
}

Source represents display or publishing preferences of user's own account. Returned as an additional entity when verifying and updated credentials, as an attribute of Account.

type Status

type Status struct {
	// ID of the status.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	ID string `json:"id"`
	// The date when this status was created (ISO 8601 Datetime).
	// example: 2021-07-30T09:20:25+00:00
	CreatedAt string `json:"created_at"`
	// ID of the status being replied to.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	// nullable: true
	InReplyToID *string `json:"in_reply_to_id"`
	// ID of the account being replied to.
	// example: 01FBVD42CQ3ZEEVMW180SBX03B
	// nullable: true
	InReplyToAccountID *string `json:"in_reply_to_account_id"`
	// Status contains sensitive content.
	// example: false
	Sensitive bool `json:"sensitive"`
	// Subject, summary, or content warning for the status.
	// example: warning nsfw
	SpoilerText string `json:"spoiler_text"`
	// Visibility of this status.
	// example: unlisted
	Visibility Visibility `json:"visibility"`
	// Primary language of this status (ISO 639 Part 1 two-letter language code).
	// Will be null if language is not known.
	// example: en
	Language *string `json:"language"`
	// ActivityPub URI of the status. Equivalent to the status's activitypub ID.
	// example: https://example.org/users/some_user/statuses/01FBVD42CQ3ZEEVMW180SBX03B
	URI string `json:"uri"`
	// 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
	URL string `json:"url"`
	// Number of replies to this status, according to our instance.
	RepliesCount int `json:"replies_count"`
	// Number of times this status has been boosted/reblogged, according to our instance.
	ReblogsCount int `json:"reblogs_count"`
	// Number of favourites/likes this status has received, according to our instance.
	FavouritesCount int `json:"favourites_count"`
	// This status has been favourited by the account viewing it.
	Favourited bool `json:"favourited"`
	// This status has been boosted/reblogged by the account viewing it.
	Reblogged bool `json:"reblogged"`
	// Replies to this status have been muted by the account viewing it.
	Muted bool `json:"muted"`
	// This status has been bookmarked by the account viewing it.
	Bookmarked bool `json:"bookmarked"`
	// This status has been pinned by the account viewing it (only relevant for your own statuses).
	Pinned bool `json:"pinned"`
	// The content of this status. Should be HTML, but might also be plaintext in some cases.
	// example: <p>Hey this is a status!</p>
	Content string `json:"content"`
	// The status that this status reblogs/boosts.
	// nullable: true
	Reblog *StatusReblogged `json:"reblog"`
	// The application used to post this status, if visible.
	Application *Application `json:"application,omitempty"`
	// The account that authored this status.
	Account *Account `json:"account"`
	// Media that is attached to this status.
	MediaAttachments []Attachment `json:"media_attachments"`
	// 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.
	// nullable: true
	Card *Card `json:"card"`
	// The poll attached to the status.
	// nullable: true
	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.
	Text string `json:"text,omitempty"`
}

Status models a status or post.

swagger:model status

func (*Status) GetAccountID added in v0.2.0

func (s *Status) GetAccountID() string

func (*Status) GetBoostOfAccountID added in v0.2.0

func (s *Status) GetBoostOfAccountID() string

func (*Status) GetBoostOfID added in v0.2.0

func (s *Status) GetBoostOfID() string

func (*Status) GetID added in v0.2.0

func (s *Status) GetID() string

type StatusContentType added in v0.8.0

type StatusContentType string

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.

swagger:enum statusContentType swagger:type string

const (
	StatusContentTypePlain    StatusContentType = "text/plain"
	StatusContentTypeMarkdown StatusContentType = "text/markdown"
	StatusContentTypeDefault                    = StatusContentTypePlain
)

Content type to use when parsing submitted status into an html-formatted status

type StatusCreateRequest

type StatusCreateRequest struct {
	// Text content of the status.
	// If media_ids is provided, this becomes optional.
	// Attaching a poll is optional while status is provided.
	// in: formData
	Status string `form:"status" json:"status" xml:"status"`
	// Array of Attachment ids to be attached as media.
	// If provided, status becomes optional, and poll cannot be used.
	//
	// If the status is being submitted as a form, the key is 'media_ids[]',
	// but if it's json or xml, the key is 'media_ids'.
	//
	// in: formData
	MediaIDs []string `form:"media_ids[]" json:"media_ids" xml:"media_ids"`
	// Poll to include with this status.
	// swagger:ignore
	Poll *PollRequest `form:"poll" json:"poll" xml:"poll"`
	// ID of the status being replied to, if status is a reply.
	// in: formData
	InReplyToID string `form:"in_reply_to_id" json:"in_reply_to_id" xml:"in_reply_to_id"`
	// Status and attached media should be marked as sensitive.
	// in: formData
	Sensitive bool `form:"sensitive" json:"sensitive" xml:"sensitive"`
	// Text to be shown as a warning or subject before the actual content.
	// Statuses are generally collapsed behind this field.
	// in: formData
	SpoilerText string `form:"spoiler_text" json:"spoiler_text" xml:"spoiler_text"`
	// Visibility of the posted status.
	// in: formData
	Visibility Visibility `form:"visibility" json:"visibility" xml:"visibility"`
	// ISO 8601 Datetime at which to schedule a status.
	// Providing this parameter will cause ScheduledStatus to be returned instead of Status.
	// Must be at least 5 minutes in the future.
	// in: formData
	ScheduledAt string `form:"scheduled_at" json:"scheduled_at" xml:"scheduled_at"`
	// ISO 639 language code for this status.
	// in: formData
	Language string `form:"language" json:"language" xml:"language"`
	// Content type to use when parsing this status.
	// in: formData
	ContentType StatusContentType `form:"content_type" json:"content_type" xml:"content_type"`
}

StatusCreateRequest models status creation parameters.

swagger:model statusCreateRequest

type StatusParams

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"`
}

StatusParams represents parameters for a scheduled status.

type StatusReblogged

type StatusReblogged struct {
	*Status
}

StatusReblogged represents a reblogged status.

swagger:model statusReblogged

type Tag

type Tag struct {
	// The value of the hashtag after the # sign.
	// example: helloworld
	Name string `json:"name"`
	// Web link to the hashtag.
	// example: https://example.org/tags/helloworld
	URL string `json:"url"`
}

Tag represents a hashtag used within the content of a status.

swagger:model tag

type TimelineMarker

type TimelineMarker struct {
	// The ID of the most recently viewed entity.
	LastReadID string `json:"last_read_id"`
	// The timestamp of when the marker was set (ISO 8601 Datetime)
	UpdatedAt string `json:"updated_at"`
	// Used for locking to prevent write conflicts.
	Version string `json:"version"`
}

TimelineMarker contains information about a user's progress through a specific timeline.

type Token

type Token struct {
	// Access token used for authorization.
	AccessToken string `json:"access_token"`
	// OAuth token type. Will always be 'Bearer'.
	// example: bearer
	TokenType string `json:"token_type"`
	// OAuth scopes granted by this token, space-separated.
	// example: read write admin
	Scope string `json:"scope"`
	// When the OAuth token was generated (UNIX timestamp seconds).
	// example: 1627644520
	CreatedAt int64 `json:"created_at"`
}

Token represents an OAuth token used for authenticating with the GoToSocial API and performing actions.

swagger:model oauthToken

type UpdateCredentialsRequest

type UpdateCredentialsRequest struct {
	// Account should be made discoverable and shown in the profile directory (if enabled).
	Discoverable *bool `form:"discoverable" json:"discoverable" xml:"discoverable"`
	// Account is flagged as a bot.
	Bot *bool `form:"bot" json:"bot" xml:"bot"`
	// The display name to use for the account.
	DisplayName *string `form:"display_name" json:"display_name" xml:"display_name"`
	// Bio/description of this account.
	Note *string `form:"note" json:"note" xml:"note"`
	// Avatar image encoded using multipart/form-data.
	Avatar *multipart.FileHeader `form:"avatar" json:"avatar" xml:"avatar"`
	// Header image encoded using multipart/form-data
	Header *multipart.FileHeader `form:"header" json:"header" xml:"header"`
	// Require manual approval of follow requests.
	Locked *bool `form:"locked" json:"locked" xml:"locked"`
	// New Source values for this account.
	Source *UpdateSource `form:"source" json:"source" xml:"source"`
	// Profile metadata name and value
	FieldsAttributes *[]UpdateField `form:"fields_attributes" json:"fields_attributes" xml:"fields_attributes"`
	// Custom CSS to be included when rendering this account's profile or statuses.
	CustomCSS *string `form:"custom_css" json:"custom_css" xml:"custom_css"`
	// Enable RSS feed of public toots for this account at /@[username]/feed.rss
	EnableRSS *bool `form:"enable_rss" json:"enable_rss" xml:"enable_rss"`
}

UpdateCredentialsRequest models an update to an account, by the account owner.

swagger:ignore

type UpdateField

type UpdateField struct {
	// Name of the field
	Name *string `form:"name" json:"name" xml:"name"`
	// Value of the field
	Value *string `form:"value" json:"value" xml:"value"`
}

UpdateField is to be used specifically in an UpdateCredentialsRequest. By default, max 4 fields and 255 characters per property/value.

swagger:model updateField

type UpdateSource

type UpdateSource struct {
	// Default post privacy for authored statuses.
	Privacy *string `form:"privacy" json:"privacy" xml:"privacy"`
	// Mark authored statuses as sensitive by default.
	Sensitive *bool `form:"sensitive" json:"sensitive" xml:"sensitive"`
	// Default language to use for authored statuses. (ISO 6391)
	Language *string `form:"language" json:"language" xml:"language"`
	// Default format for authored statuses (text/plain or text/markdown).
	StatusContentType *string `form:"status_content_type" json:"status_content_type" xml:"status_content_type"`
}

UpdateSource is to be used specifically in an UpdateCredentialsRequest.

swagger:model updateSource

type Visibility

type Visibility string

Visibility models the visibility of a status.

swagger:enum statusVisibility swagger:type string

const (
	// VisibilityPublic is visible to everyone, and will be available via the web even for nonauthenticated users.
	VisibilityPublic Visibility = "public"
	// VisibilityUnlisted is visible to everyone, but only on home timelines, lists, etc.
	VisibilityUnlisted Visibility = "unlisted"
	// VisibilityPrivate is visible only to followers of the account that posted the status.
	VisibilityPrivate Visibility = "private"
	// VisibilityMutualsOnly is visible only to mutual followers of the account that posted the status.
	VisibilityMutualsOnly Visibility = "mutuals_only"
	// VisibilityDirect is visible only to accounts tagged in the status. It is equivalent to a direct message.
	VisibilityDirect Visibility = "direct"
)

type WellKnownResponse

type WellKnownResponse struct {
	Subject string   `json:"subject,omitempty"`
	Aliases []string `json:"aliases,omitempty"`
	Links   []Link   `json:"links,omitempty"`
}

WellKnownResponse represents the response to either a webfinger request for an 'acct' resource, or a request to nodeinfo. For example, it would be returned from https://example.org/.well-known/webfinger?resource=acct:some_username@example.org

See https://webfinger.net/

swagger:model wellKnownResponse

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL