mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[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
This commit is contained in:
@@ -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:
|
||||
|
Reference in New Issue
Block a user