summaryrefslogtreecommitdiff
path: root/docs/api/swagger.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/api/swagger.yaml')
-rw-r--r--docs/api/swagger.yaml1899
1 files changed, 1783 insertions, 116 deletions
diff --git a/docs/api/swagger.yaml b/docs/api/swagger.yaml
index c281a052b..e72f19f02 100644
--- a/docs/api/swagger.yaml
+++ b/docs/api/swagger.yaml
@@ -82,7 +82,68 @@ definitions:
title: Source represents display or publishing preferences of user's own account.
type: object
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ StatusCreateRequest:
+ properties:
+ format:
+ $ref: '#/definitions/statusFormat'
+ in_reply_to_id:
+ description: |-
+ ID of the status being replied to, if status is a reply.
+ in: formData
+ type: string
+ x-go-name: InReplyToID
+ language:
+ description: |-
+ ISO 639 language code for this status.
+ in: formData
+ type: string
+ x-go-name: Language
+ media_ids:
+ description: |-
+ Array of Attachment ids to be attached as media.
+ If provided, status becomes optional, and poll cannot be used.
+ in: formData
+ items:
+ type: string
+ type: array
+ x-go-name: MediaIDs
+ scheduled_at:
+ description: |-
+ ISO 8601 Datetime at which to schedule a status.
+ Providing this paramter will cause ScheduledStatus to be returned instead of Status.
+ Must be at least 5 minutes in the future.
+ in: formData
+ type: string
+ x-go-name: ScheduledAt
+ sensitive:
+ description: |-
+ Status and attached media should be marked as sensitive.
+ in: formData
+ type: boolean
+ x-go-name: Sensitive
+ spoiler_text:
+ description: |-
+ Text to be shown as a warning or subject before the actual content.
+ Statuses are generally collapsed behind this field.
+ in: formData
+ type: string
+ x-go-name: SpoilerText
+ status:
+ description: |-
+ Text content of the status.
+ If media_ids is provided, this becomes optional.
+ Attaching a poll is optional while status is provided.
+ in: formData
+ type: string
+ x-go-name: Status
+ visibility:
+ $ref: '#/definitions/statusVisibility'
+ title: StatusCreateRequest models status creation parameters.
+ type: object
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
account:
+ description: The modelled account can be either a remote account, or one on this
+ instance.
properties:
acct:
description: |-
@@ -113,8 +174,7 @@ definitions:
type: string
x-go-name: CreatedAt
discoverable:
- description: Account has opted into discovery features such as the profile
- directory.
+ description: Account has opted into discovery features.
type: boolean
x-go-name: Discoverable
display_name:
@@ -203,64 +263,10 @@ definitions:
example: some_user
type: string
x-go-name: Username
- title: Account represents a fediverse account of some kind, either a remote one
- or one on this instance.
+ title: Account models a fediverse account.
type: object
x-go-name: Account
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
- accountCreateRequest:
- properties:
- agreement:
- description: The user agrees to the terms, conditions, and policies of the
- instance.
- type: boolean
- x-go-name: Agreement
- email:
- description: The email address to be used for login.
- type: string
- x-go-name: Email
- locale:
- description: The language of the confirmation email that will be sent.
- type: string
- x-go-name: Locale
- password:
- description: The password to be used for login. This will be hashed before
- storage.
- type: string
- x-go-name: Password
- reason:
- description: Text that will be reviewed by moderators if registrations require
- manual approval.
- type: string
- x-go-name: Reason
- username:
- description: The desired username for the account.
- type: string
- x-go-name: Username
- title: AccountCreateRequest represents the form submitted during a POST request
- to /api/v1/accounts.
- type: object
- x-go-name: AccountCreateRequest
- x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
- accountFollowRequest:
- description: AccountFollowRequest is for parsing requests at /api/v1/accounts/:id/follow
- properties:
- TargetAccountID:
- description: |-
- ID of the account to follow request
- This should be a URL parameter not a form field
- type: string
- notify:
- description: Notify when this account posts?
- type: boolean
- x-go-name: Notify
- reblogs:
- description: Show reblogs for this account?
- type: boolean
- x-go-name: Reblogs
- type: object
- x-go-name: AccountFollowRequest
- x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
accountRelationship:
properties:
blocked_by:
@@ -322,9 +328,232 @@ definitions:
type: object
x-go-name: Relationship
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ advancedStatusCreateForm:
+ description: |-
+ AdvancedStatusCreateForm wraps the mastodon status create form along with the GTS advanced
+ visibility settings.
+ properties:
+ boostable:
+ description: This status can be boosted/reblogged.
+ type: boolean
+ x-go-name: Boostable
+ federated:
+ description: This status will be federated beyond the local timeline(s).
+ type: boolean
+ x-go-name: Federated
+ format:
+ $ref: '#/definitions/statusFormat'
+ in_reply_to_id:
+ description: |-
+ ID of the status being replied to, if status is a reply.
+ in: formData
+ type: string
+ x-go-name: InReplyToID
+ language:
+ description: |-
+ ISO 639 language code for this status.
+ in: formData
+ type: string
+ x-go-name: Language
+ likeable:
+ description: This status can be liked/faved.
+ type: boolean
+ x-go-name: Likeable
+ media_ids:
+ description: |-
+ Array of Attachment ids to be attached as media.
+ If provided, status becomes optional, and poll cannot be used.
+ in: formData
+ items:
+ type: string
+ type: array
+ x-go-name: MediaIDs
+ replyable:
+ description: This status can be replied to.
+ type: boolean
+ x-go-name: Replyable
+ scheduled_at:
+ description: |-
+ ISO 8601 Datetime at which to schedule a status.
+ Providing this paramter will cause ScheduledStatus to be returned instead of Status.
+ Must be at least 5 minutes in the future.
+ in: formData
+ type: string
+ x-go-name: ScheduledAt
+ sensitive:
+ description: |-
+ Status and attached media should be marked as sensitive.
+ in: formData
+ type: boolean
+ x-go-name: Sensitive
+ spoiler_text:
+ description: |-
+ Text to be shown as a warning or subject before the actual content.
+ Statuses are generally collapsed behind this field.
+ in: formData
+ type: string
+ x-go-name: SpoilerText
+ status:
+ description: |-
+ Text content of the status.
+ If media_ids is provided, this becomes optional.
+ Attaching a poll is optional while status is provided.
+ in: formData
+ type: string
+ x-go-name: Status
+ visibility:
+ $ref: '#/definitions/statusVisibility'
+ type: object
+ x-go-name: AdvancedStatusCreateForm
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ advancedVisibilityFlagsForm:
+ description: |-
+ AdvancedVisibilityFlagsForm allows a few more advanced flags to be set on new statuses, in addition
+ to the standard mastodon-compatible ones.
+ properties:
+ boostable:
+ description: This status can be boosted/reblogged.
+ type: boolean
+ x-go-name: Boostable
+ federated:
+ description: This status will be federated beyond the local timeline(s).
+ type: boolean
+ x-go-name: Federated
+ likeable:
+ description: This status can be liked/faved.
+ type: boolean
+ x-go-name: Likeable
+ replyable:
+ description: This status can be replied to.
+ type: boolean
+ x-go-name: Replyable
+ type: object
+ x-go-name: AdvancedVisibilityFlagsForm
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ announcement:
+ properties:
+ all_day:
+ description: Announcement doesn't have begin time and end time, but begin
+ day and end day.
+ type: boolean
+ x-go-name: AllDay
+ content:
+ description: |-
+ The body of the announcement.
+ Should be HTML formatted.
+ example: <p>This is an announcement. No malarky.</p>
+ type: string
+ x-go-name: Content
+ emoji:
+ description: Emojis used in this announcement.
+ items:
+ $ref: '#/definitions/emoji'
+ type: array
+ x-go-name: Emojis
+ ends_at:
+ description: |-
+ 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"
+ type: string
+ x-go-name: EndsAt
+ id:
+ description: The ID of the announcement.
+ example: 01FC30T7X4TNCZK0TH90QYF3M4
+ type: string
+ x-go-name: ID
+ mentions:
+ description: Mentions this announcement contains.
+ items:
+ $ref: '#/definitions/Mention'
+ type: array
+ x-go-name: Mentions
+ published:
+ description: |-
+ Announcement is 'published', ie., visible to users.
+ Announcements that are not published should be shown only to admins.
+ type: boolean
+ x-go-name: Published
+ published_at:
+ description: When the announcement was first published (ISO 8601 Datetime).
+ example: "2021-07-30T09:20:25+00:00"
+ type: string
+ x-go-name: PublishedAt
+ reactions:
+ description: Reactions to this announcement.
+ items:
+ $ref: '#/definitions/announcementReaction'
+ type: array
+ x-go-name: Reactions
+ read:
+ description: Requesting account has seen this announcement.
+ type: boolean
+ x-go-name: Read
+ starts_at:
+ description: |-
+ 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"
+ type: string
+ x-go-name: StartsAt
+ statuses:
+ description: Statuses contained in this announcement.
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ x-go-name: Statuses
+ tags:
+ description: Tags used in this announcement.
+ items:
+ $ref: '#/definitions/tag'
+ type: array
+ x-go-name: Tags
+ updated_at:
+ description: When the announcement was last updated (ISO 8601 Datetime).
+ example: "2021-07-30T09:20:25+00:00"
+ type: string
+ x-go-name: UpdatedAt
+ title: Announcement models an admin announcement for the instance.
+ type: object
+ x-go-name: Announcement
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ announcementReaction:
+ properties:
+ count:
+ description: The total number of users who have added this reaction.
+ example: 5
+ format: int64
+ type: integer
+ x-go-name: Count
+ me:
+ description: This reaction belongs to the account viewing it.
+ type: boolean
+ x-go-name: Me
+ name:
+ description: The emoji used for the reaction. Either a unicode emoji, or a
+ custom emoji's shortcode.
+ example: blobcat_uwu
+ type: string
+ x-go-name: Name
+ static_url:
+ description: |-
+ 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
+ type: string
+ x-go-name: StaticURL
+ url:
+ description: |-
+ Web link to the image of the custom emoji.
+ Empty for unicode emojis.
+ example: https://example.org/custom_emojis/original/blobcat_uwu.png
+ type: string
+ x-go-name: URL
+ title: AnnouncementReaction models a user reaction to an announcement.
+ type: object
+ x-go-name: AnnouncementReaction
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
application:
- description: Primarily, application is used for allowing apps like Tusky etc to
- connect to Mastodon on behalf of a user.
properties:
client_id:
description: Client ID associated with this application.
@@ -358,7 +587,7 @@ definitions:
example: https://tusky.app
type: string
x-go-name: Website
- title: Application represents an api Application, as defined here.
+ title: Application models an api application.
type: object
x-go-name: Application
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
@@ -377,6 +606,7 @@ definitions:
x-go-name: Description
id:
description: The ID of the attachment.
+ example: 01FC31DZT1AYWDZ8XTCRWRBYRK
type: string
x-go-name: ID
meta:
@@ -401,17 +631,13 @@ definitions:
type: string
x-go-name: RemoteURL
text_url:
- description: A shorter URL for the attachment.
+ description: |-
+ A shorter URL for the attachment.
+ Not currently used.
type: string
x-go-name: TextURL
type:
- description: |-
- The type of the attachment.
- unknown = unsupported or unrecognized file type.
- image = Static image.
- gifv = Looping, soundless animation.
- video = Video clip.
- audio = Audio track.
+ description: The type of the attachment.
example: image
type: string
x-go-name: Type
@@ -420,8 +646,7 @@ definitions:
example: https://example.org/fileserver/some_id/attachments/some_id/original/attachment.jpeg
type: string
x-go-name: URL
- title: Attachment represents the object returned to a client after a successful
- media upload request.
+ title: Attachment models a media attachment.
type: object
x-go-name: Attachment
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
@@ -481,13 +706,7 @@ definitions:
type: string
x-go-name: Title
type:
- description: |-
- The type of the preview card.
- String (Enumerable, oneOf)
- link = Link OEmbed
- photo = Photo OEmbed
- video = Video OEmbed
- rich = iframe OEmbed. Not currently accepted, so won't show up in practice.
+ description: The type of the preview card.
example: link
type: string
x-go-name: Type
@@ -650,58 +869,196 @@ definitions:
type: object
x-go-name: Field
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ instance:
+ properties:
+ approval_required:
+ description: New account registrations require admin approval.
+ type: boolean
+ x-go-name: ApprovalRequired
+ contact_account:
+ $ref: '#/definitions/account'
+ description:
+ description: |-
+ Description of the instance.
+
+ Should be HTML formatted, but might be plaintext.
+
+ This should be displayed on the 'about' page for an instance.
+ type: string
+ x-go-name: Description
+ email:
+ description: An email address that may be used for inquiries.
+ example: admin@example.org
+ type: string
+ x-go-name: Email
+ invites_enabled:
+ description: Invites are enabled on this instance.
+ type: boolean
+ x-go-name: InvitesEnabled
+ languages:
+ description: Primary language of the instance.
+ example: en
+ items:
+ type: string
+ type: array
+ x-go-name: Languages
+ max_toot_chars:
+ description: |-
+ Maximum allowed length of a post on this instance, in characters.
+
+ This is provided for compatibility with Tusky and other apps.
+ example: 5000
+ format: uint64
+ type: integer
+ x-go-name: MaxTootChars
+ registrations:
+ description: New account registrations are enabled on this instance.
+ type: boolean
+ x-go-name: Registrations
+ short_description:
+ 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.
+ type: string
+ x-go-name: ShortDescription
+ stats:
+ additionalProperties:
+ format: int64
+ type: integer
+ description: 'Statistics about the instance: number of posts, accounts, etc.'
+ type: object
+ x-go-name: Stats
+ thumbnail:
+ description: URL of the instance avatar/banner image.
+ example: https://example.org/files/instance/thumbnail.jpeg
+ type: string
+ x-go-name: Thumbnail
+ title:
+ description: The title of the instance.
+ example: GoToSocial Example Instance
+ type: string
+ x-go-name: Title
+ uri:
+ description: The URI of the instance.
+ example: https://example.org
+ type: string
+ x-go-name: URI
+ urls:
+ $ref: '#/definitions/instanceURLs'
+ version:
+ description: |-
+ 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
+ type: string
+ x-go-name: Version
+ title: Instance models information about this or another instance.
+ type: object
+ x-go-name: Instance
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ instanceURLs:
+ properties:
+ streaming_api:
+ description: Websockets address for status and notification streaming.
+ example: wss://example.org
+ type: string
+ x-go-name: StreamingAPI
+ title: InstanceURLs models instance-relevant URLs for client application consumption.
+ type: object
+ x-go-name: InstanceURLs
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
mediaDimensions:
properties:
aspect:
+ description: |-
+ Aspect ratio of the media.
+ Equal to width / height.
+ example: 1.777777778
format: float
type: number
x-go-name: Aspect
bitrate:
+ description: Bitrate of the media in bits per second.
+ example: 1000000
format: int64
type: integer
x-go-name: Bitrate
duration:
+ description: |-
+ Duration of the media in seconds.
+ Only set for video and audio.
+ example: 5.43
format: float
type: number
x-go-name: Duration
frame_rate:
+ description: |-
+ Framerate of the media.
+ Only set for video and gifs.
+ example: "30"
type: string
x-go-name: FrameRate
height:
+ description: |-
+ Height of the media in pixels.
+ Not set for audio.
+ example: 1080
format: int64
type: integer
x-go-name: Height
size:
+ description: |-
+ Size of the media, in the format `[width]x[height]`.
+ Not set for audio.
+ example: 1920x1080
type: string
x-go-name: Size
width:
+ description: |-
+ Width of the media in pixels.
+ Not set for audio.
+ example: 1920
format: int64
type: integer
x-go-name: Width
- title: MediaDimensions describes the physical properties of a piece of media.
- It should be returned to the caller as part of MediaMeta.
+ title: MediaDimensions models detailed properties of a piece of media.
type: object
x-go-name: MediaDimensions
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
mediaFocus:
properties:
x:
+ description: |-
+ x position of the focus
+ should be between -1 and 1
format: float
type: number
x-go-name: X
"y":
+ description: |-
+ y position of the focus
+ should be between -1 and 1
format: float
type: number
x-go-name: "Y"
- title: MediaFocus describes the focal point of a piece of media. It should be
- returned to the caller as part of MediaMeta.
+ title: MediaFocus models the focal point of a piece of media.
type: object
x-go-name: MediaFocus
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
mediaMeta:
- description: MediaMeta describes the returned media
+ description: This can be metadata about an image, an audio file, video, etc.
properties:
aspect:
+ description: |-
+ Aspect ratio of the media.
+ Equal to width / height.
+ example: 1.777777778
format: float
type: number
x-go-name: Aspect
@@ -715,16 +1072,28 @@ definitions:
type: string
x-go-name: AudioEncode
duration:
+ description: |-
+ Duration of the media in seconds.
+ Only set for video and audio.
+ example: 5.43
format: float
type: number
x-go-name: Duration
focus:
$ref: '#/definitions/mediaFocus'
fps:
+ description: |-
+ Framerate of the media.
+ Only set for video and gifs.
+ example: 30
format: uint16
type: integer
x-go-name: FPS
height:
+ description: |-
+ Height of the media in pixels.
+ Not set for audio.
+ example: 1080
format: int64
type: integer
x-go-name: Height
@@ -734,14 +1103,23 @@ definitions:
original:
$ref: '#/definitions/mediaDimensions'
size:
+ description: |-
+ Size of the media, in the format `[width]x[height]`.
+ Not set for audio.
+ example: 1920x1080
type: string
x-go-name: Size
small:
$ref: '#/definitions/mediaDimensions'
width:
+ description: |-
+ Width of the media in pixels.
+ Not set for audio.
+ example: 1920
format: int64
type: integer
x-go-name: Width
+ title: MediaMeta models media metadata.
type: object
x-go-name: MediaMeta
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
@@ -838,8 +1216,9 @@ definitions:
type: string
x-go-name: Title
votes_count:
- description: The number of received votes for this option. Number, or null
- if results are not published yet.
+ description: |-
+ The number of received votes for this option.
+ Number, or null if results are not published yet.
format: int64
type: integer
x-go-name: VotesCount
@@ -847,6 +1226,27 @@ definitions:
type: object
x-go-name: PollOptions
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ searchResult:
+ properties:
+ accounts:
+ items:
+ $ref: '#/definitions/account'
+ type: array
+ x-go-name: Accounts
+ hashtags:
+ items:
+ $ref: '#/definitions/tag'
+ type: array
+ x-go-name: Hashtags
+ statuses:
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ x-go-name: Statuses
+ title: SearchResult models a search result.
+ type: object
+ x-go-name: SearchResult
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
status:
properties:
account:
@@ -932,7 +1332,7 @@ definitions:
poll:
$ref: '#/definitions/poll'
reblog:
- $ref: '#/definitions/status'
+ $ref: '#/definitions/statusReblogged'
reblogged:
description: This status has been boosted/reblogged by the account viewing
it.
@@ -986,12 +1386,179 @@ definitions:
x-go-name: URL
visibility:
$ref: '#/definitions/statusVisibility'
- title: Status represents a status or post.
+ title: Status models a status or post.
type: object
x-go-name: Status
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ statusContext:
+ properties:
+ ancestors:
+ description: Parents in the thread.
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ x-go-name: Ancestors
+ descendants:
+ description: Children in the thread.
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ x-go-name: Descendants
+ title: Context models the tree around a given status.
+ type: object
+ x-go-name: Context
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ statusFormat:
+ description: Can be either plain or markdown. Empty will default to plain.
+ title: StatusFormat is the format in which to parse the submitted status.
+ type: string
+ x-go-name: StatusFormat
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ statusReblogged:
+ properties:
+ account:
+ $ref: '#/definitions/account'
+ application:
+ $ref: '#/definitions/application'
+ bookmarked:
+ description: This status has been bookmarked by the account viewing it.
+ type: boolean
+ x-go-name: Bookmarked
+ card:
+ $ref: '#/definitions/card'
+ content:
+ description: The content of this status. Should be HTML, but might also be
+ plaintext in some cases.
+ example: <p>Hey this is a status!</p>
+ type: string
+ x-go-name: Content
+ created_at:
+ description: The date when this status was created (ISO 8601 Datetime).
+ example: "2021-07-30T09:20:25+00:00"
+ type: string
+ x-go-name: CreatedAt
+ emojis:
+ description: Custom emoji to be used when rendering status content.
+ items:
+ $ref: '#/definitions/emoji'
+ type: array
+ x-go-name: Emojis
+ favourited:
+ description: This status has been favourited by the account viewing it.
+ type: boolean
+ x-go-name: Favourited
+ favourites_count:
+ description: Number of favourites/likes this status has received, according
+ to our instance.
+ format: int64
+ type: integer
+ x-go-name: FavouritesCount
+ id:
+ description: ID of the status.
+ example: 01FBVD42CQ3ZEEVMW180SBX03B
+ type: string
+ x-go-name: ID
+ in_reply_to_account_id:
+ description: ID of the account being replied to.
+ example: 01FBVD42CQ3ZEEVMW180SBX03B
+ type: string
+ x-go-name: InReplyToAccountID
+ in_reply_to_id:
+ description: ID of the status being replied to.
+ example: 01FBVD42CQ3ZEEVMW180SBX03B
+ type: string
+ x-go-name: InReplyToID
+ language:
+ description: Primary language of this status (ISO 639 Part 1 two-letter language
+ code).
+ example: en
+ type: string
+ x-go-name: Language
+ media_attachments:
+ description: Media that is attached to this status.
+ items:
+ $ref: '#/definitions/attachment'
+ type: array
+ x-go-name: MediaAttachments
+ mentions:
+ description: Mentions of users within the status content.
+ items:
+ $ref: '#/definitions/Mention'
+ type: array
+ x-go-name: Mentions
+ muted:
+ description: Replies to this status have been muted by the account viewing
+ it.
+ type: boolean
+ x-go-name: Muted
+ pinned:
+ description: This status has been pinned by the account viewing it (only relevant
+ for your own statuses).
+ type: boolean
+ x-go-name: Pinned
+ poll:
+ $ref: '#/definitions/poll'
+ reblog:
+ $ref: '#/definitions/statusReblogged'
+ reblogged:
+ description: This status has been boosted/reblogged by the account viewing
+ it.
+ type: boolean
+ x-go-name: Reblogged
+ reblogs_count:
+ description: Number of times this status has been boosted/reblogged, according
+ to our instance.
+ format: int64
+ type: integer
+ x-go-name: ReblogsCount
+ replies_count:
+ description: Number of replies to this status, according to our instance.
+ format: int64
+ type: integer
+ x-go-name: RepliesCount
+ sensitive:
+ description: Status contains sensitive content.
+ example: false
+ type: boolean
+ x-go-name: Sensitive
+ spoiler_text:
+ description: Subject, summary, or content warning for the status.
+ example: warning nsfw
+ type: string
+ x-go-name: SpoilerText
+ tags:
+ description: Hashtags used within the status content.
+ items:
+ $ref: '#/definitions/tag'
+ type: array
+ x-go-name: Tags
+ text:
+ description: |-
+ 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.
+ type: string
+ x-go-name: Text
+ uri:
+ description: ActivityPub URI of the status. Equivalent to the status's activitypub
+ ID.
+ example: https://example.org/users/some_user/statuses/01FBVD42CQ3ZEEVMW180SBX03B
+ type: string
+ x-go-name: URI
+ url:
+ description: 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
+ type: string
+ x-go-name: URL
+ visibility:
+ $ref: '#/definitions/statusVisibility'
+ title: StatusReblogged represents a reblogged status.
+ type: object
+ x-go-name: StatusReblogged
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
statusVisibility:
- title: Visibility denotes the visibility of a status to other users.
+ title: Visibility models the visibility of a status.
type: string
x-go-name: Visibility
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
@@ -1026,6 +1593,24 @@ definitions:
type: object
x-go-name: UpdateField
x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
+ updateSource:
+ properties:
+ language:
+ description: Default language to use for authored statuses. (ISO 6391)
+ type: string
+ x-go-name: Language
+ privacy:
+ description: Default post privacy for authored statuses.
+ type: string
+ x-go-name: Privacy
+ sensitive:
+ description: Mark authored statuses as sensitive by default.
+ type: boolean
+ x-go-name: Sensitive
+ title: UpdateSource is to be used specifically in an UpdateCredentialsRequest.
+ type: object
+ x-go-name: UpdateSource
+ x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model
host: example.org
info:
contact:
@@ -1044,13 +1629,44 @@ paths:
- application/json
- application/xml
- application/x-www-form-urlencoded
- - multipart/form-data
+ description: |-
+ The parameters can also be given in the body of the request, as JSON, if the content-type is set to 'application/json'.
+ The parameters can also be given in the body of the request, as XML, if the content-type is set to 'application/xml'.
operationId: accountCreate
parameters:
- - in: body
- name: Account Create Request
- schema:
- $ref: '#/definitions/accountCreateRequest'
+ - description: Text that will be reviewed by moderators if registrations require
+ manual approval.
+ in: query
+ name: reason
+ type: string
+ x-go-name: Reason
+ - description: The desired username for the account.
+ in: query
+ name: username
+ type: string
+ x-go-name: Username
+ - description: The email address to be used for login.
+ in: query
+ name: email
+ type: string
+ x-go-name: Email
+ - description: The password to be used for login. This will be hashed before
+ storage.
+ in: query
+ name: password
+ type: string
+ x-go-name: Password
+ - description: The user agrees to the terms, conditions, and policies of the
+ instance.
+ in: query
+ name: agreement
+ type: boolean
+ x-go-name: Agreement
+ - description: The language of the confirmation email that will be sent.
+ in: query
+ name: locale
+ type: string
+ x-go-name: Locale
produces:
- application/json
responses:
@@ -1130,13 +1746,32 @@ paths:
- accounts
/api/v1/accounts/{id}/follow:
post:
+ consumes:
+ - application/json
+ - application/xml
+ - application/x-www-form-urlencoded
+ description: |-
+ The parameters can also be given in the body of the request, as JSON, if the content-type is set to 'application/json'.
+ The parameters can also be given in the body of the request, as XML, if the content-type is set to 'application/xml'.
operationId: accountFollow
parameters:
- - description: The id of the account to follow.
+ - description: ID of the account to follow.
in: path
name: id
required: true
type: string
+ - default: true
+ description: Show reblogs from this account.
+ in: formData
+ name: reblogs
+ type: boolean
+ x-go-name: Reblogs
+ - default: false
+ description: Notify when this account posts.
+ in: formData
+ name: notify
+ type: boolean
+ x-go-name: Notify
produces:
- application/json
responses:
@@ -1258,7 +1893,7 @@ paths:
- application/json
responses:
"200":
- description: Array of statuses..
+ description: Array of statuses.
schema:
items:
$ref: '#/definitions/status'
@@ -1378,11 +2013,13 @@ paths:
in: formData
name: bot
type: boolean
- - description: The display name to use for the account.
+ - allowEmptyValue: true
+ description: The display name to use for the account.
in: formData
name: display_name
type: string
- - description: Bio/description of this account.
+ - allowEmptyValue: true
+ description: Bio/description of this account.
in: formData
name: note
type: string
@@ -1400,15 +2037,15 @@ paths:
type: boolean
- description: Default post privacy for authored statuses.
in: formData
- name: source.privacy
+ name: source[privacy]
type: string
- description: Mark authored statuses as sensitive by default.
in: formData
- name: source.sensitive
+ name: source[sensitive]
type: boolean
- description: Default language to use for authored statuses (ISO 6391).
in: formData
- name: source.language
+ name: source[language]
type: string
produces:
- application/json
@@ -1458,14 +2095,15 @@ paths:
- description: |-
The code to use for the emoji, which will be used by instance denizens to select it.
This must be unique on the instance.
- example: blobcat_uwu
in: formData
name: shortcode
pattern: \w{2,30}
+ required: true
type: string
- - description: A jpeg, png, or gif image of the emoji.
+ - description: A png or gif image of the emoji. Animated pngs work too!
in: formData
- name: domains
+ name: image
+ required: true
type: file
produces:
- application/json
@@ -1517,11 +2155,11 @@ paths:
summary: View all domain blocks currently in place.
tags:
- admin
- patch:
+ post:
consumes:
- multipart/form-data
description: |-
- Note that you have two options when using this endpoint: either you can set 'import' to true
+ Note that you have two options when using this endpoint: either you can set `import` to true
and upload a file containing multiple domain blocks, JSON-formatted, or you can leave import as
false, and just add one domain block.
@@ -1537,38 +2175,34 @@ paths:
type: boolean
- description: |-
JSON-formatted list of domain blocks to import.
- This is only used if 'import' is set to true.
+ This is only used if `import` is set to true.
in: formData
name: domains
type: file
- description: |-
Single domain to block.
- Used only if 'import' is not true.
- example: example.org
+ Used only if `import` is not true.
in: formData
name: domain
type: string
- description: |-
Obfuscate the name of the domain when serving it publicly.
Eg., 'example.org' becomes something like 'ex***e.org'.
- Used only if 'import' is not true.
+ Used only if `import` is not true.
in: formData
name: obfuscate
type: boolean
- description: |-
Public comment about this domain block.
Will be displayed alongside the domain block if you choose to share blocks.
- Used only if 'import' is not true.
- example: harassment, transphobia
+ Used only if `import` is not true.
in: formData
name: public_comment
type: string
- description: |-
Private comment about this domain block. Will only be shown to other admins, so this
is a useful way of internally keeping track of why a certain domain ended up blocked.
- Used only if 'import' is not true.
- example: harassment, transphobia, and some stuff only other admins need to
- know about
+ Used only if `import` is not true.
in: formData
name: private_comment
type: string
@@ -1576,9 +2210,9 @@ paths:
- application/json
responses:
"200":
- description: "The newly created domain block, if import != true.\nNote that
- if a list has been imported, then an `array` of\nnewly created domain
- blocks will be returned instead. "
+ description: |-
+ The newly created domain block, if `import` != `true`.
+ Note that if a list has been imported, then an `array` of newly created domain blocks will be returned instead.
schema:
$ref: '#/definitions/domainBlock'
"400":
@@ -1646,6 +2280,1032 @@ paths:
summary: View domain block with the given ID.
tags:
- admin
+ /api/v1/apps:
+ post:
+ consumes:
+ - application/json
+ - application/xml
+ - application/x-www-form-urlencoded
+ description: |-
+ The registered application can be used to obtain an application token.
+ This can then be used to register a new account, or (through user auth) obtain an access token.
+
+ The parameters can also be given in the body of the request, as JSON, if the content-type is set to 'application/json'.
+ The parameters can also be given in the body of the request, as XML, if the content-type is set to 'application/xml'.
+ operationId: appCreate
+ parameters:
+ - description: The name of the application.
+ in: formData
+ name: client_name
+ required: true
+ type: string
+ x-go-name: ClientName
+ - description: |-
+ 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
+ name: redirect_uris
+ required: true
+ type: string
+ x-go-name: RedirectURIs
+ - description: |-
+ Space separated list of scopes.
+
+ If no scopes are provided, defaults to `read`.
+ in: formData
+ name: scopes
+ type: string
+ x-go-name: Scopes
+ - description: A URL to the web page of the app (optional).
+ in: formData
+ name: website
+ type: string
+ x-go-name: Website
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly-created application.
+ schema:
+ $ref: '#/definitions/application'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "422":
+ description: unprocessable
+ "500":
+ description: internal error
+ summary: Register a new application on this instance.
+ tags:
+ - apps
+ /api/v1/blocks:
+ get:
+ description: |-
+ The next and previous queries can be parsed from the returned Link header.
+ Example:
+
+ ```
+ <https://example.org/api/v1/blocks?limit=80&max_id=01FC0SKA48HNSVR6YKZCQGS2V8>; rel="next", <https://example.org/api/v1/blocks?limit=80&min_id=01FC0SKW5JK2Q4EVAV2B462YY0>; rel="prev"
+ ````
+ operationId: blocksGet
+ parameters:
+ - default: 20
+ description: Number of blocks to return.
+ in: query
+ name: limit
+ type: integer
+ - description: |-
+ Return only blocks *OLDER* than the given max block ID.
+ The block with the specified ID will not be included in the response.
+ in: query
+ name: max_id
+ type: string
+ - description: |-
+ Return only blocks *NEWER* than the given since block ID.
+ The block with the specified ID will not be included in the response.
+ in: query
+ name: since_id
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: ""
+ headers:
+ Link:
+ description: Links to the next and previous queries.
+ type: string
+ schema:
+ items:
+ $ref: '#/definitions/account'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - read:blocks
+ summary: Get an array of accounts that requesting account has blocked.
+ tags:
+ - blocks
+ /api/v1/instance:
+ get:
+ description: "This is mostly provided for Mastodon application compatibility,
+ since many apps that work with Mastodon use `/api/v1/instance` to inform their
+ connection parameters. \n\nHowever, it can also be used by other instances
+ for gathering instance information and representing instances in some UI or
+ other."
+ operationId: instanceGet
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: Instance information.
+ schema:
+ $ref: '#/definitions/instance'
+ "500":
+ description: internal error
+ summary: View instance information.
+ tags:
+ - instance
+ patch:
+ consumes:
+ - multipart/form-data
+ description: This requires admin permissions on the instance.
+ operationId: instanceUpdate
+ parameters:
+ - allowEmptyValue: true
+ description: Title to use for the instance.
+ in: formData
+ maximum: 40
+ name: title
+ type: string
+ - allowEmptyValue: true
+ description: |-
+ Username of the contact account.
+ This must be the username of an instance admin.
+ in: formData
+ name: contact_username
+ type: string
+ - allowEmptyValue: true
+ description: Email address to use as the instance contact.
+ in: formData
+ name: contact_email
+ type: string
+ - allowEmptyValue: true
+ description: Short description of the instance.
+ in: formData
+ maximum: 500
+ name: short_description
+ type: string
+ - allowEmptyValue: true
+ description: Longer description of the instance.
+ in: formData
+ maximum: 5000
+ name: description
+ type: string
+ - allowEmptyValue: true
+ description: Terms and conditions of the instance.
+ in: formData
+ maximum: 5000
+ name: terms
+ type: string
+ - description: Avatar of the instance.
+ in: formData
+ name: avatar
+ type: file
+ - description: Header of the instance.
+ in: formData
+ name: header
+ type: file
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly updated instance.
+ schema:
+ $ref: '#/definitions/instance'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ security:
+ - OAuth2 Bearer:
+ - admin
+ summary: Update your instance information and/or upload a new avatar/header
+ for the instance.
+ tags:
+ - instance
+ /api/v1/media:
+ post:
+ consumes:
+ - multipart/form-data
+ operationId: mediaCreate
+ parameters:
+ - description: |-
+ Image or media description to use as alt-text on the attachment.
+ This is very useful for users of screenreaders.
+ May or may not be required, depending on your instance settings.
+ in: formData
+ name: description
+ type: string
+ - description: |-
+ Focus of the media file.
+ If present, it should be in the form of two comma-separated floats between -1 and 1.
+ For example: `-0.5,0.25`.
+ in: formData
+ name: focus
+ type: string
+ - description: The media attachment to upload.
+ in: formData
+ name: file
+ required: true
+ type: file
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly-created media attachment.
+ schema:
+ $ref: '#/definitions/attachment'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "422":
+ description: unprocessable
+ security:
+ - OAuth2 Bearer:
+ - write:media
+ summary: Upload a new media attachment.
+ tags:
+ - media
+ /api/v1/media/{id}:
+ get:
+ operationId: mediaGet
+ parameters:
+ - description: id of the attachment
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The requested media attachment.
+ schema:
+ $ref: '#/definitions/attachment'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "422":
+ description: unprocessable
+ security:
+ - OAuth2 Bearer:
+ - read:media
+ summary: Get a media attachment that you own.
+ tags:
+ - media
+ put:
+ consumes:
+ - application/json
+ - application/xml
+ - application/x-www-form-urlencoded
+ description: |-
+ You must own the media attachment, and the attachment must not yet be attached to a status.
+
+ The parameters can also be given in the body of the request, as JSON, if the content-type is set to 'application/json'.
+ The parameters can also be given in the body of the request, as XML, if the content-type is set to 'application/xml'.
+ operationId: mediaUpdate
+ parameters:
+ - description: id of the attachment to update
+ in: path
+ name: id
+ required: true
+ type: string
+ - allowEmptyValue: true
+ description: |-
+ Image or media description to use as alt-text on the attachment.
+ This is very useful for users of screenreaders.
+ May or may not be required, depending on your instance settings.
+ in: formData
+ name: description
+ type: string
+ - allowEmptyValue: true
+ description: |-
+ Focus of the media file.
+ If present, it should be in the form of two comma-separated floats between -1 and 1.
+ For example: `-0.5,0.25`.
+ in: formData
+ name: focus
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly-updated media attachment.
+ schema:
+ $ref: '#/definitions/attachment'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "422":
+ description: unprocessable
+ security:
+ - OAuth2 Bearer:
+ - write:media
+ summary: Update a media attachment.
+ tags:
+ - media
+ /api/v1/search:
+ get:
+ description: If statuses are in the result, they will be returned in descending
+ chronological order (newest first), with sequential IDs (bigger = newer).
+ operationId: searchGet
+ parameters:
+ - description: If type is `statuses`, then statuses returned will be authored
+ only by this account.
+ in: query
+ name: account_id
+ type: string
+ x-go-name: AccountID
+ - description: |-
+ Return results *older* than this id.
+
+ The entry with this ID will not be included in the search results.
+ in: query
+ name: max_id
+ type: string
+ x-go-name: MaxID
+ - description: |-
+ Return results *newer* than this id.
+
+ The entry with this ID will not be included in the search results.
+ in: query
+ name: min_id
+ type: string
+ x-go-name: MinID
+ - description: |-
+ Type of the search query to perform.
+
+ Must be one of: `accounts`, `hashtags`, `statuses`.
+ in: query
+ name: type
+ required: true
+ type: string
+ x-go-name: Type
+ - default: false
+ description: Filter out tags that haven't been reviewed and approved by an
+ instance admin.
+ in: query
+ name: exclude_unreviewed
+ type: boolean
+ x-go-name: ExcludeUnreviewed
+ - description: |-
+ 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`
+ in: query
+ name: q
+ required: true
+ type: string
+ x-go-name: Query
+ - default: false
+ description: Attempt to resolve the query by performing a remote webfinger
+ lookup, if the query includes a remote host.
+ in: query
+ name: resolve
+ type: boolean
+ x-go-name: Resolve
+ - default: 20
+ description: Maximum number of results to load, per type.
+ format: int64
+ in: query
+ maximum: 40
+ minimum: 1
+ name: limit
+ type: integer
+ x-go-name: Limit
+ - default: 0
+ description: Offset for paginating search results.
+ format: int64
+ in: query
+ name: offset
+ type: integer
+ x-go-name: Offset
+ - default: false
+ description: Only include accounts that the searching account is following.
+ in: query
+ name: following
+ type: boolean
+ x-go-name: Following
+ responses:
+ "200":
+ description: Results of the search.
+ schema:
+ items:
+ $ref: '#/definitions/searchResult'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ security:
+ - OAuth2 Bearer:
+ - read:search
+ summary: Search for statuses, accounts, or hashtags, on this instance or elsewhere.
+ tags:
+ - search
+ /api/v1/statuses:
+ post:
+ consumes:
+ - application/json
+ - application/xml
+ - application/x-www-form-urlencoded
+ description: |-
+ The parameters can also be given in the body of the request, as JSON, if the content-type is set to 'application/json'.
+ The parameters can also be given in the body of the request, as XML, if the content-type is set to 'application/xml'.
+ operationId: statusCreate
+ parameters:
+ - description: |-
+ Text content of the status.
+ If media_ids is provided, this becomes optional.
+ Attaching a poll is optional while status is provided.
+ in: formData
+ name: status
+ type: string
+ x-go-name: Status
+ - description: |-
+ Array of Attachment ids to be attached as media.
+ If provided, status becomes optional, and poll cannot be used.
+ in: formData
+ items:
+ type: string
+ name: media_ids
+ type: array
+ x-go-name: MediaIDs
+ - description: ID of the status being replied to, if status is a reply.
+ in: formData
+ name: in_reply_to_id
+ type: string
+ x-go-name: InReplyToID
+ - description: Status and attached media should be marked as sensitive.
+ in: formData
+ name: sensitive
+ type: boolean
+ x-go-name: Sensitive
+ - description: |-
+ Text to be shown as a warning or subject before the actual content.
+ Statuses are generally collapsed behind this field.
+ in: formData
+ name: spoiler_text
+ type: string
+ x-go-name: SpoilerText
+ - description: Visibility of the posted status.
+ in: formData
+ name: visibility
+ type: string
+ x-go-name: Visibility
+ - description: |-
+ ISO 8601 Datetime at which to schedule a status.
+ Providing this paramter will cause ScheduledStatus to be returned instead of Status.
+ Must be at least 5 minutes in the future.
+ in: formData
+ name: scheduled_at
+ type: string
+ x-go-name: ScheduledAt
+ - description: ISO 639 language code for this status.
+ in: formData
+ name: language
+ type: string
+ x-go-name: Language
+ - description: Format to use when parsing this status.
+ in: formData
+ name: format
+ type: string
+ x-go-name: Format
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly created status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "404":
+ description: not found
+ "500":
+ description: internal error
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Create a new status.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}:
+ delete:
+ description: |-
+ The deleted status will be returned in the response. The `text` field will contain the original text of the status as it was submitted.
+ This is useful when doing a 'delete and redraft' type operation.
+ operationId: statusDelete
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly deleted status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Delete status with the given ID. The status must belong to you.
+ tags:
+ - statuses
+ get:
+ operationId: statusGet
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The requested created status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "404":
+ description: not found
+ "500":
+ description: internal error
+ security:
+ - OAuth2 Bearer:
+ - read:statuses
+ summary: View status with the given ID.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/context:
+ get:
+ description: The returned statuses will be ordered in a thread structure, so
+ they are suitable to be displayed in the order in which they were returned.
+ operationId: statusContext
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: Status context object.
+ schema:
+ $ref: '#/definitions/statusContext'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - read:statuses
+ summary: Return ancestors and descendants of the given status.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/favourite:
+ post:
+ operationId: statusFave
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The newly faved status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Star/like/favourite the given status, if permitted.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/favourited_by:
+ get:
+ operationId: statusFavedBy
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: ""
+ schema:
+ items:
+ $ref: '#/definitions/account'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - read:accounts
+ summary: View accounts that have faved/starred/liked the target status.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/reblog:
+ post:
+ description: |-
+ If the target status is rebloggable/boostable, it will be shared with your followers.
+ This is equivalent to an activitypub 'announce' activity.
+ operationId: statusReblog
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The boost of the status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Reblog/boost status with the given ID.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/reblogged_by:
+ get:
+ operationId: statusBoostedBy
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: ""
+ schema:
+ items:
+ $ref: '#/definitions/account'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - read:accounts
+ summary: View accounts that have reblogged/boosted the target status.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/unfavourite:
+ post:
+ operationId: statusUnfave
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The unfaved status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Unstar/unlike/unfavourite the given status.
+ tags:
+ - statuses
+ /api/v1/statuses/{id}/unreblog:
+ post:
+ operationId: statusUnreblog
+ parameters:
+ - description: Target status ID.
+ in: path
+ name: id
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: The unboosted status.
+ schema:
+ $ref: '#/definitions/status'
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ "403":
+ description: forbidden
+ "404":
+ description: not found
+ security:
+ - OAuth2 Bearer:
+ - write:statuses
+ summary: Unreblog/unboost status with the given ID.
+ tags:
+ - statuses
+ /api/v1/streaming:
+ get:
+ description: |-
+ The scheme used should *always* be `wss`. The streaming basepath can be viewed at `/api/v1/instance`.
+
+ On a successful connection, a code `101` will be returned, which indicates that the connection is being upgraded to a secure websocket connection.
+
+ As long as the connection is open, various message types will be streamed into it.
+
+ GoToSocial will ping the connection every 30 seconds to check whether the client is still receiving.
+
+ If the ping fails, or something else goes wrong during transmission, then the connection will be dropped, and the client will be expected to start it again.
+ operationId: streamGet
+ parameters:
+ - description: Access token for the requesting account.
+ in: query
+ name: access_token
+ required: true
+ type: string
+ - description: |-
+ Type of stream to request.
+
+ Options are:
+
+ `user`: receive updates for the account's home timeline.
+ `public`: receive updates for the public timeline.
+ `public:local`: receive updates for the local timeline.
+ `hashtag`: receive updates for a given hashtag.
+ `hashtag:local`: receive local updates for a given hashtag.
+ `list`: receive updates for a certain list of accounts.
+ `direct`: receive updates for direct messages.
+ in: query
+ name: stream
+ required: true
+ type: string
+ produces:
+ - application/json
+ responses:
+ "101":
+ description: ""
+ schema:
+ properties:
+ event:
+ description: |-
+ The type of event being received.
+
+ `update`: a new status has been received.
+ `notification`: a new notification has been received.
+ `delete`: a status has been deleted.
+ `filters_changed`: not implemented.
+ enum:
+ - update
+ - notification
+ - delete
+ - filters_changed
+ type: string
+ payload:
+ description: |-
+ The payload of the streamed message.
+ Different depending on the `event` type.
+
+ If present, it should be parsed as a string.
+
+ If `event` = `update`, then the payload will be a JSON string of a status.
+ If `event` = `notification`, then the payload will be a JSON string of a notification.
+ If `event` = `delete`, then the payload will be a status ID.
+ example: '{"id":"01FC3TZ5CFG6H65GCKCJRKA669","created_at":"2021-08-02T16:25:52Z","sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"https://gts.superseriousbusiness.org/users/dumpsterqueer/statuses/01FC3TZ5CFG6H65GCKCJRKA669","url":"https://gts.superseriousbusiness.org/@dumpsterqueer/statuses/01FC3TZ5CFG6H65GCKCJRKA669","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"bookmarked":fals…//gts.superseriousbusiness.org/fileserver/01JNN207W98SGG3CBJ76R5MVDN/header/original/019036W043D8FXPJKSKCX7G965.png","header_static":"https://gts.superseriousbusiness.org/fileserver/01JNN207W98SGG3CBJ76R5MVDN/header/small/019036W043D8FXPJKSKCX7G965.png","followers_count":33,"following_count":28,"statuses_count":126,"last_status_at":"2021-08-02T16:25:52Z","emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":null,"text":"a"}'
+ type: string
+ stream:
+ items:
+ enum:
+ - user
+ - public
+ - public:local
+ - hashtag
+ - hashtag:local
+ - list
+ - direct
+ type: string
+ type: array
+ type: object
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ schemes:
+ - wss
+ security:
+ - OAuth2 Bearer:
+ - read:streaming
+ summary: Initiate a websocket connection for live streaming of statuses and
+ notifications.
+ tags:
+ - streaming
+ /api/v1/timelines/home:
+ get:
+ description: |-
+ The statuses will be returned in descending chronological order (newest first), with sequential IDs (bigger = newer).
+
+ The returned Link header can be used to generate the previous and next queries when scrolling up or down a timeline.
+
+ Example:
+
+ ```
+ <https://example.org/api/v1/timelines/home?limit=20&max_id=01FC3GSQ8A3MMJ43BPZSGEG29M>; rel="next", <https://example.org/api/v1/timelines/home?limit=20&min_id=01FC3KJW2GYXSDDRA6RWNDM46M>; rel="prev"
+ ````
+ operationId: homeTimeline
+ parameters:
+ - description: |-
+ Return only statuses *OLDER* than the given max status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: max_id
+ type: string
+ - description: |-
+ Return only statuses *NEWER* than the given since status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: since_id
+ type: string
+ - description: |-
+ Return only statuses *NEWER* than the given since status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: min_id
+ type: string
+ - default: 20
+ description: Number of statuses to return.
+ in: query
+ name: limit
+ type: integer
+ - default: false
+ description: Show only statuses posted by local accounts.
+ in: query
+ name: local
+ type: boolean
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: Array of statuses.
+ headers:
+ Link:
+ description: Links to the next and previous queries.
+ type: string
+ schema:
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ security:
+ - OAuth2 Bearer:
+ - read:statuses
+ summary: See statuses/posts by accounts you follow.
+ tags:
+ - timelines
+ /api/v1/timelines/public:
+ get:
+ description: |-
+ The statuses will be returned in descending chronological order (newest first), with sequential IDs (bigger = newer).
+
+ The returned Link header can be used to generate the previous and next queries when scrolling up or down a timeline.
+
+ Example:
+
+ ```
+ <https://example.org/api/v1/timelines/public?limit=20&max_id=01FC3GSQ8A3MMJ43BPZSGEG29M>; rel="next", <https://example.org/api/v1/timelines/public?limit=20&min_id=01FC3KJW2GYXSDDRA6RWNDM46M>; rel="prev"
+ ````
+ operationId: publicTimeline
+ parameters:
+ - description: |-
+ Return only statuses *OLDER* than the given max status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: max_id
+ type: string
+ - description: |-
+ Return only statuses *NEWER* than the given since status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: since_id
+ type: string
+ - description: |-
+ Return only statuses *NEWER* than the given since status ID.
+ The status with the specified ID will not be included in the response.
+ in: query
+ name: min_id
+ type: string
+ - default: 20
+ description: Number of statuses to return.
+ in: query
+ name: limit
+ type: integer
+ - default: false
+ description: Show only statuses posted by local accounts.
+ in: query
+ name: local
+ type: boolean
+ produces:
+ - application/json
+ responses:
+ "200":
+ description: Array of statuses.
+ headers:
+ Link:
+ description: Links to the next and previous queries.
+ type: string
+ schema:
+ items:
+ $ref: '#/definitions/status'
+ type: array
+ "400":
+ description: bad request
+ "401":
+ description: unauthorized
+ security:
+ - OAuth2 Bearer:
+ - read:statuses
+ summary: See public statuses/posts that your instance is aware of.
+ tags:
+ - timelines
schemes:
- https
- http
@@ -1664,10 +3324,17 @@ securityDefinitions:
admin:accounts: grants admin access to accounts
read: grants read access to everything
read:accounts: grants read access to accounts
+ read:blocks: grant read access to blocks
+ read:media: grant read access to media
+ read:search: grant read access to searches
+ read:statuses: grants read access to statuses
+ read:streaming: grants read access to streaming api
write: grants write access to everything
write:accounts: grants write access to accounts
write:blocks: grants write access to blocks
write:follows: grants write access to follows
+ write:media: grants write access to media
+ write:statuses: grants write access to statuses
tokenUrl: https://example.org/oauth/token
type: oauth2
swagger: "2.0"