diff options
author | 2022-06-23 16:54:54 +0200 | |
---|---|---|
committer | 2022-06-23 16:54:54 +0200 | |
commit | 5f00d4980bdc55bce8d23e38392b345d525dbf4a (patch) | |
tree | 5300f3bbe38d7fcbf5ba07eda2c8c2142c573040 /docs/api | |
parent | [bugfix] Don't remove jpeg orientation metadata (#663) (diff) | |
download | gotosocial-5f00d4980bdc55bce8d23e38392b345d525dbf4a.tar.xz |
[feature] Implement `/api/v1/instance/peers` endpoint (#660)
* add missing license headers
* start adding instance peers get
* rename domainblock.go
* embed domain in domainblock so it can be reused
* update swagger docs
* add test instances to db
* update tests
* add/update instancepeersget
* update domain model
* add getinstancepeers to db
* instance-expose-peers, instance-expose-suspended
* add auth checks for both current filters
* attach endpoint to router
* include public comment
* obfuscate domain if required
* go mod tidy
* update swagger docs
* remove unnecessary comment
* return 'flat' peerlist if no query params provided
Diffstat (limited to 'docs/api')
-rw-r--r-- | docs/api/swagger.yaml | 101 |
1 files changed, 98 insertions, 3 deletions
diff --git a/docs/api/swagger.yaml b/docs/api/swagger.yaml index fa1bd7499..38562c8ad 100644 --- a/docs/api/swagger.yaml +++ b/docs/api/swagger.yaml @@ -784,6 +784,35 @@ definitions: type: object x-go-name: Card x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model + domain: + description: Domain represents a remote domain + properties: + domain: + description: The hostname of the domain. + example: example.org + type: string + x-go-name: Domain + public_comment: + description: If the domain is blocked, what's the publicly-stated reason for + the block. + example: they smell + type: string + x-go-name: PublicComment + silenced_at: + description: Time at which this domain was silenced. Key will not be present + on open domains. + example: "2021-07-30T09:20:25+00:00" + type: string + x-go-name: SilencedAt + suspended_at: + description: Time at which this domain was suspended. Key will not be present + on open domains. + example: "2021-07-30T09:20:25+00:00" + type: string + x-go-name: SuspendedAt + type: object + x-go-name: Domain + x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model domainBlock: description: DomainBlock represents a block on one domain properties: @@ -798,7 +827,7 @@ definitions: type: string x-go-name: CreatedBy domain: - description: The hostname of the blocked domain. + description: The hostname of the domain. example: example.org type: string x-go-name: Domain @@ -822,16 +851,28 @@ definitions: type: string x-go-name: PrivateComment public_comment: - description: Public comment for this block, visible if domain blocks are served - publicly. + description: If the domain is blocked, what's the publicly-stated reason for + the block. example: they smell type: string x-go-name: PublicComment + silenced_at: + description: Time at which this domain was silenced. Key will not be present + on open domains. + example: "2021-07-30T09:20:25+00:00" + type: string + x-go-name: SilencedAt subscription_id: description: The ID of the subscription that created/caused this domain block. example: 01FBW25TF5J67JW3HFHZCSD23K type: string x-go-name: SubscriptionID + suspended_at: + description: Time at which this domain was suspended. Key will not be present + on open domains. + example: "2021-07-30T09:20:25+00:00" + type: string + x-go-name: SuspendedAt type: object x-go-name: DomainBlock x-go-package: github.com/superseriousbusiness/gotosocial/internal/api/model @@ -3038,6 +3079,60 @@ paths: for the instance. tags: - instance + /api/v1/instance/peers: + get: + operationId: instancePeersGet + parameters: + - description: |- + Comma-separated list of filters to apply to results. Recognized values are: + 'open' -- include peers that are not suspended or silenced + 'suspended' -- include peers that have been suspended. + If filter is 'open', only instances that haven't been suspended or silenced will be returned. + If filter is 'suspended', only suspended instances will be shown. + If filter is 'open,suspended', then all known instances will be returned. + If filter is an empty string or not set, then 'open' will be assumed as the default. + in: query + name: filter + type: string + produces: + - application/json + responses: + "200": + description: |- + If no filter parameter is provided, or filter is empty, then a legacy, + Mastodon-API compatible response will be returned. This will consist of + just a 'flat' array of strings like `["example.com", "example.org"]`. + + If a filter parameter is provided, then an array of objects with at least + a `domain` key set on each object will be returned. + + Domains that are silenced or suspended will also have a key + 'suspended_at' or 'silenced_at' that contains an iso8601 date string. + If one of these keys is not present on the domain object, it is open. + Suspended instances may in some cases be obfuscated, which means they + will have some letters replaced by '*' to make it more difficult for + bad actors to target instances with harassment. + + Whether a flat response or a more detailed response is returned, domains + will be sorted alphabetically by hostname. + schema: + items: + $ref: '#/definitions/domain' + type: array + "400": + description: bad request + "401": + description: unauthorized + "403": + description: forbidden + "404": + description: not found + "406": + description: not acceptable + "500": + description: internal server error + tags: + - instance /api/v1/media: post: consumes: |