summaryrefslogtreecommitdiff
path: root/internal/api/model/account.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-05-08 14:25:55 +0200
committerLibravatar GitHub <noreply@github.com>2021-05-08 14:25:55 +0200
commit6f5c045284d34ba580d3007f70b97e05d6760527 (patch)
tree7614da22fba906361a918fb3527465b39272ac93 /internal/api/model/account.go
parentRevert "make boosts work woo (#12)" (#15) (diff)
downloadgotosocial-6f5c045284d34ba580d3007f70b97e05d6760527.tar.xz
Ap (#14)
Big restructuring and initial work on activitypub
Diffstat (limited to 'internal/api/model/account.go')
-rw-r--r--internal/api/model/account.go136
1 files changed, 136 insertions, 0 deletions
diff --git a/internal/api/model/account.go b/internal/api/model/account.go
new file mode 100644
index 000000000..efb69d6fd
--- /dev/null
+++ b/internal/api/model/account.go
@@ -0,0 +1,136 @@
+/*
+ GoToSocial
+ Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
+
+ 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/>.
+*/
+
+package model
+
+import (
+ "mime/multipart"
+ "net"
+)
+
+// Account represents a mastodon-api Account object, as described here: https://docs.joinmastodon.org/entities/account/
+type Account struct {
+ // The account id
+ ID string `json:"id"`
+ // The username of the account, not including domain.
+ Username string `json:"username"`
+ // The Webfinger account URI. Equal to username for local users, or username@domain for remote users.
+ Acct string `json:"acct"`
+ // The profile's display name.
+ DisplayName string `json:"display_name"`
+ // Whether the account manually approves follow requests.
+ Locked bool `json:"locked"`
+ // Whether the account has opted into discovery features such as the profile directory.
+ Discoverable bool `json:"discoverable,omitempty"`
+ // A presentational flag. Indicates that the account may perform automated actions, may not be monitored, or identifies as a robot.
+ Bot bool `json:"bot"`
+ // When the account was created. (ISO 8601 Datetime)
+ CreatedAt string `json:"created_at"`
+ // The profile's bio / description.
+ Note string `json:"note"`
+ // The location of the user's profile page.
+ URL string `json:"url"`
+ // An image icon that is shown next to statuses and in the profile.
+ Avatar string `json:"avatar"`
+ // A static version of the avatar. Equal to avatar if its value is a static image; different if avatar is an animated GIF.
+ AvatarStatic string `json:"avatar_static"`
+ // An image banner that is shown above the profile and in profile cards.
+ Header string `json:"header"`
+ // A static version of the header. Equal to header if its value is a static image; different if header is an animated GIF.
+ HeaderStatic string `json:"header_static"`
+ // The reported followers of this profile.
+ FollowersCount int `json:"followers_count"`
+ // The reported follows of this profile.
+ FollowingCount int `json:"following_count"`
+ // How many statuses are attached to this account.
+ StatusesCount int `json:"statuses_count"`
+ // When the most recent status was posted. (ISO 8601 Datetime)
+ LastStatusAt string `json:"last_status_at"`
+ // Custom emoji entities to be used when rendering the profile. If none, an empty array will be returned.
+ Emojis []Emoji `json:"emojis"`
+ // Additional metadata attached to a profile as name-value pairs.
+ Fields []Field `json:"fields"`
+ // An extra entity returned when an account is suspended.
+ Suspended bool `json:"suspended,omitempty"`
+ // When a timed mute will expire, if applicable. (ISO 8601 Datetime)
+ MuteExpiresAt string `json:"mute_expires_at,omitempty"`
+ // An extra entity to be used with API methods to verify credentials and update credentials.
+ Source *Source `json:"source,omitempty"`
+}
+
+// AccountCreateRequest represents the form submitted during a POST request to /api/v1/accounts.
+// See https://docs.joinmastodon.org/methods/accounts/
+type AccountCreateRequest struct {
+ // Text that will be reviewed by moderators if registrations require manual approval.
+ Reason string `form:"reason"`
+ // The desired username for the account
+ Username string `form:"username" binding:"required"`
+ // The email address to be used for login
+ Email string `form:"email" binding:"required"`
+ // The password to be used for login
+ Password string `form:"password" binding:"required"`
+ // Whether the user agrees to the local rules, terms, and policies.
+ // These should be presented to the user in order to allow them to consent before setting this parameter to TRUE.
+ Agreement bool `form:"agreement" binding:"required"`
+ // The language of the confirmation email that will be sent
+ Locale string `form:"locale" binding:"required"`
+ // The IP of the sign up request, will not be parsed from the form but must be added manually
+ IP net.IP `form:"-"`
+}
+
+// UpdateCredentialsRequest represents the form submitted during a PATCH request to /api/v1/accounts/update_credentials.
+// See https://docs.joinmastodon.org/methods/accounts/
+type UpdateCredentialsRequest struct {
+ // Whether the account should be shown in the profile directory.
+ Discoverable *bool `form:"discoverable"`
+ // Whether the account has a bot flag.
+ Bot *bool `form:"bot"`
+ // The display name to use for the profile.
+ DisplayName *string `form:"display_name"`
+ // The account bio.
+ Note *string `form:"note"`
+ // Avatar image encoded using multipart/form-data
+ Avatar *multipart.FileHeader `form:"avatar"`
+ // Header image encoded using multipart/form-data
+ Header *multipart.FileHeader `form:"header"`
+ // Whether manual approval of follow requests is required.
+ Locked *bool `form:"locked"`
+ // New Source values for this account
+ Source *UpdateSource `form:"source"`
+ // Profile metadata name and value
+ FieldsAttributes *[]UpdateField `form:"fields_attributes"`
+}
+
+// UpdateSource is to be used specifically in an UpdateCredentialsRequest.
+type UpdateSource struct {
+ // Default post privacy for authored statuses.
+ Privacy *string `form:"privacy"`
+ // Whether to mark authored statuses as sensitive by default.
+ Sensitive *bool `form:"sensitive"`
+ // Default language to use for authored statuses. (ISO 6391)
+ Language *string `form:"language"`
+}
+
+// UpdateField is to be used specifically in an UpdateCredentialsRequest.
+// By default, max 4 fields and 255 characters per property/value.
+type UpdateField struct {
+ // Name of the field
+ Name *string `form:"name"`
+ // Value of the field
+ Value *string `form:"value"`
+}