admin

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2022 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BasePath is the base API path for this module.
	BasePath = "/api/v1/admin"
	// EmojiPath is used for posting/deleting custom emojis.
	EmojiPath = BasePath + "/custom_emojis"
	// EmojiPathWithID is used for interacting with a single emoji.
	EmojiPathWithID = EmojiPath + "/:" + IDKey
	// EmojiCategoriesPath is used for interacting with emoji categories.
	EmojiCategoriesPath = EmojiPath + "/categories"
	// DomainBlocksPath is used for posting domain blocks.
	DomainBlocksPath = BasePath + "/domain_blocks"
	// DomainBlocksPathWithID is used for interacting with a single domain block.
	DomainBlocksPathWithID = DomainBlocksPath + "/:" + IDKey
	// AccountsPath is used for listing + acting on accounts.
	AccountsPath = BasePath + "/accounts"
	// AccountsPathWithID is used for interacting with a single account.
	AccountsPathWithID = AccountsPath + "/:" + IDKey
	// AccountsActionPath is used for taking action on a single account.
	AccountsActionPath = AccountsPathWithID + "/action"
	MediaCleanupPath   = BasePath + "/media_cleanup"

	// ExportQueryKey is for requesting a public export of some data.
	ExportQueryKey = "export"
	// ImportQueryKey is for submitting an import of some data.
	ImportQueryKey = "import"
	// IDKey specifies the ID of a single item being interacted with.
	IDKey = "id"
	// FilterKey is for applying filters to admin views of accounts, emojis, etc.
	FilterQueryKey = "filter"
	// MaxShortcodeDomainKey is the url query for returning emoji results lower (alphabetically)
	// than the given `[shortcode]@[domain]` parameter.
	MaxShortcodeDomainKey = "max_shortcode_domain"
	// MaxShortcodeDomainKey is the url query for returning emoji results higher (alphabetically)
	// than the given `[shortcode]@[domain]` parameter.
	MinShortcodeDomainKey = "min_shortcode_domain"
	// LimitKey is for specifying maximum number of results to return.
	LimitKey = "limit"
)

Variables

This section is empty.

Functions

func New

func New(processor processing.Processor) api.ClientModule

New returns a new admin module

Types

type Module

type Module struct {
	// contains filtered or unexported fields
}

Module implements the ClientAPIModule interface for admin-related actions (reports, emojis, etc)

func (*Module) AccountActionPOSTHandler added in v0.2.2

func (m *Module) AccountActionPOSTHandler(c *gin.Context)

AccountActionPOSTHandler swagger:operation POST /api/v1/admin/accounts/{id}/action adminAccountAction

Perform an admin action on an account.

---
tags:
- admin

consumes:
- multipart/form-data

produces:
- application/json

parameters:
-
	name: id
	required: true
	in: path
	description: ID of the account.
	type: string
-
	name: type
	in: formData
	description: Type of action to be taken (`disable`, `silence`, or `suspend`).
	type: string
	required: true
-
	name: text
	in: formData
	description: Optional text describing why this action was taken.
	type: string

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: OK
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) DomainBlockDELETEHandler

func (m *Module) DomainBlockDELETEHandler(c *gin.Context)

DomainBlockDELETEHandler swagger:operation DELETE /api/v1/admin/domain_blocks/{id} domainBlockDelete

Delete domain block with the given ID.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the domain block.
	in: path
	required: true

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: The domain block that was just deleted.
		schema:
			"$ref": "#/definitions/domainBlock"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) DomainBlockGETHandler

func (m *Module) DomainBlockGETHandler(c *gin.Context)

DomainBlockGETHandler swagger:operation GET /api/v1/admin/domain_blocks/{id} domainBlockGet

View domain block with the given ID.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the domain block.
	in: path
	required: true

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: The requested domain block.
		schema:
			"$ref": "#/definitions/domainBlock"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) DomainBlocksGETHandler

func (m *Module) DomainBlocksGETHandler(c *gin.Context)

DomainBlocksGETHandler swagger:operation GET /api/v1/admin/domain_blocks domainBlocksGet

View all domain blocks currently in place.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: export
	type: boolean
	description: >-
		If set to `true`, then each entry in the returned list of domain blocks will only consist of
		the fields `domain` and `public_comment`. This is perfect for when you want to save and share
		a list of all the domains you have blocked on your instance, so that someone else can easily import them,
		but you don't want them to see the database IDs of your blocks, or private comments etc.
	in: query
	required: false

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: All domain blocks currently in place.
		schema:
			type: array
			items:
				"$ref": "#/definitions/domainBlock"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) DomainBlocksPOSTHandler

func (m *Module) DomainBlocksPOSTHandler(c *gin.Context)

DomainBlocksPOSTHandler swagger:operation POST /api/v1/admin/domain_blocks domainBlockCreate

Create one or more domain blocks, from a string or a file.

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.

The format of the json file should be something like: `[{"domain":"example.org"},{"domain":"whatever.com","public_comment":"they smell"}]`

---
tags:
- admin

consumes:
- multipart/form-data

produces:
- application/json

parameters:
-
	name: import
	in: query
	description: >-
		Signal that a list of domain blocks is being imported as a file.
		If set to `true`, then 'domains' must be present as a JSON-formatted file.
		If set to `false`, then `domains` will be ignored, and `domain` must be present.
	type: boolean
	default: false
-
	name: domains
	in: formData
	description: >-
		JSON-formatted list of domain blocks to import.
		This is only used if `import` is set to `true`.
	type: file
-
	name: domain
	in: formData
	description: >-
		Single domain to block.
		Used only if `import` is not `true`.
	type: string
-
	name: obfuscate
	in: formData
	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`.
	type: boolean
-
	name: public_comment
	in: formData
	description: >-
		Public comment about this domain block.
		This will be displayed alongside the domain block if you choose to share blocks.
		Used only if `import` is not `true`.
	type: string
-
	name: private_comment
	in: formData
	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`.
	type: string

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: >-
			The newly created domain block, if `import` != `true`.
			If a list has been imported, then an `array` of newly created domain blocks will be returned instead.
		schema:
			"$ref": "#/definitions/domainBlock"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) EmojiCategoriesGETHandler added in v0.6.0

func (m *Module) EmojiCategoriesGETHandler(c *gin.Context)

EmojiCategoriesGETHandler swagger:operation GET /api/v1/admin/custom_emojis/categories emojiCategoriesGet

Get a list of existing emoji categories.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the emoji.
	in: path
	required: true

responses:
	'200':
		description: Array of existing emoji categories.
		schema:
			type: array
			items:
				"$ref": "#/definitions/adminEmojiCategory"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) EmojiCreatePOSTHandler added in v0.2.0

func (m *Module) EmojiCreatePOSTHandler(c *gin.Context)

EmojiCreatePOSTHandler swagger:operation POST /api/v1/admin/custom_emojis emojiCreate

Upload and create a new instance emoji.

---
tags:
- admin

consumes:
- multipart/form-data

produces:
- application/json

parameters:
-
	name: shortcode
	in: formData
	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.
	type: string
	pattern: \w{2,30}
	required: true
-
	name: image
	in: formData
	description: >-
		A png or gif image of the emoji. Animated pngs work too!
		To ensure compatibility with other fedi implementations, emoji size limit is 50kb by default.
	type: file
	required: true
-
	name: category
	in: formData
	description: >-
		Category in which to place the new emoji. 64 characters or less.
		If left blank, emoji will be uncategorized. If a category with the
		given name doesn't exist yet, it will be created.
	type: string
	required: false

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: The newly-created emoji.
		schema:
			"$ref": "#/definitions/emoji"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'409':
		description: conflict -- shortcode for this emoji is already in use
	'500':
		description: internal server error

func (*Module) EmojiDELETEHandler added in v0.6.0

func (m *Module) EmojiDELETEHandler(c *gin.Context)

EmojiDELETEHandler swagger:operation DELETE /api/v1/admin/custom_emojis/{id} emojiDelete

Delete a **local** emoji with the given ID from the instance.

Emoji with the given ID will no longer be available to use on the instance.

If you just want to update the emoji image instead, use the `/api/v1/admin/custom_emojis/{id}` PATCH route.

To disable emojis from **remote** instances, use the `/api/v1/admin/custom_emojis/{id}` PATCH route.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the emoji.
	in: path
	required: true

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: The deleted emoji will be returned to the caller in case further processing is necessary.
		schema:
			"$ref": "#/definitions/adminEmoji"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) EmojiGETHandler added in v0.6.0

func (m *Module) EmojiGETHandler(c *gin.Context)

EmojiGETHandler swagger:operation GET /api/v1/admin/custom_emojis/{id} emojiGet

Get the admin view of a single emoji.

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the emoji.
	in: path
	required: true

responses:
	'200':
		description: A single emoji.
		schema:
			"$ref": "#/definitions/adminEmoji"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) EmojiPATCHHandler added in v0.6.0

func (m *Module) EmojiPATCHHandler(c *gin.Context)

EmojiPATCHHandler swagger:operation PATCH /api/v1/admin/custom_emojis/{id} emojiUpdate

Perform admin action on a local or remote emoji known to this instance.

Action performed depends upon the action `type` provided.

`disable`: disable a REMOTE emoji from being used/displayed on this instance. Does not work for local emojis.

`copy`: copy a REMOTE emoji to this instance. When doing this action, a shortcode MUST be provided, and it must be unique among emojis already present on this instance. A category MAY be provided, and the copied emoji will then be put into the provided category.

`modify`: modify a LOCAL emoji. You can provide a new image for the emoji and/or update the category.

Local emojis cannot be deleted using this endpoint. To delete a local emoji, check DELETE /api/v1/admin/custom_emojis/{id} instead.

---
tags:
- admin

consumes:
- multipart/form-data

produces:
- application/json

parameters:
-
	name: id
	type: string
	description: The id of the emoji.
	in: path
	required: true
-
	name: type
	in: formData
	description: |-
		Type of action to be taken. One of: (`disable`, `copy`, `modify`).
		For REMOTE emojis, `copy` or `disable` are supported.
		For LOCAL emojis, only `modify` is supported.
	type: string
	required: true
-
	name: shortcode
	in: formData
	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. Works for the `copy` action type only.
	type: string
	pattern: \w{2,30}
-
	name: image
	in: formData
	description: >-
		A new png or gif image to use for the emoji. Animated pngs work too!
		To ensure compatibility with other fedi implementations, emoji size limit is 50kb by default.
		Works for LOCAL emojis only.
	type: file
-
	name: category
	in: formData
	description: >-
		Category in which to place the emoji. 64 characters or less.
		If a category with the given name doesn't exist yet, it will be created.
	type: string

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: The updated emoji.
		schema:
			"$ref": "#/definitions/adminEmoji"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) EmojisGETHandler added in v0.6.0

func (m *Module) EmojisGETHandler(c *gin.Context)

EmojisGETHandler swagger:operation GET /api/v1/admin/custom_emojis emojisGet

View local and remote emojis available to / known by this instance.

The next and previous queries can be parsed from the returned Link header. Example:

`<http://localhost:8080/api/v1/admin/custom_emojis?limit=30&max_shortcode_domain=yell@fossbros-anonymous.io&filter=domain:all>; rel="next", <http://localhost:8080/api/v1/admin/custom_emojis?limit=30&min_shortcode_domain=rainbow@&filter=domain:all>; rel="prev"`

---
tags:
- admin

produces:
- application/json

parameters:
-
	name: filter
	type: string
	description: |-
		Comma-separated list of filters to apply to results. Recognized filters are:

		`domain:[domain]` -- show emojis from the given domain, eg `?filter=domain:example.org` will show emojis from `example.org` only.
		Instead of giving a specific domain, you can also give either one of the key words `local` or `all` to show either local emojis only (`domain:local`) or show all emojis from all domains (`domain:all`).
		Note: `domain:*` is equivalent to `domain:all` (including local).
		If no domain filter is provided, `domain:all` will be assumed.

		`disabled` -- include emojis that have been disabled.

		`enabled` -- include emojis that are enabled.

		`shortcode:[shortcode]` -- show only emojis with the given shortcode, eg `?filter=shortcode:blob_cat_uwu` will show only emojis with the shortcode `blob_cat_uwu` (case sensitive).

		If neither `disabled` or `enabled` are provided, both disabled and enabled emojis will be shown.

		If no filter query string is provided, the default `domain:all` will be used, which will show all emojis from all domains.
	in: query
	required: false
	default: "domain:all"
-
	name: limit
	type: integer
	description: Number of emojis to return. Less than 1, or not set, means unlimited (all emojis).
	default: 50
	in: query
-
	name: max_shortcode_domain
	type: string
	description: >-
		Return only emojis with `[shortcode]@[domain]` *LOWER* (alphabetically) than given `[shortcode]@[domain]`.
		For example, if `max_shortcode_domain=beep@example.org`, then returned values might include emojis with
		`[shortcode]@[domain]`s like `car@example.org`, `debian@aaa.com`, `test@` (local emoji), etc.

		Emoji with the given `[shortcode]@[domain]` will not be included in the result set.
	in: query
-
	name: min_shortcode_domain
	type: string
	description: >-
		Return only emojis with `[shortcode]@[domain]` *HIGHER* (alphabetically) than given `[shortcode]@[domain]`.
		For example, if `max_shortcode_domain=beep@example.org`, then returned values might include emojis with
		`[shortcode]@[domain]`s like `arse@test.com`, `0101_binary@hackers.net`, `bee@` (local emoji), etc.

		Emoji with the given `[shortcode]@[domain]` will not be included in the result set.
	in: query

responses:
	'200':
		headers:
			Link:
				type: string
				description: Links to the next and previous queries.
		description: An array of emojis, arranged alphabetically by shortcode and domain.
		schema:
			type: array
			items:
				"$ref": "#/definitions/adminEmoji"
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) MediaCleanupPOSTHandler added in v0.3.4

func (m *Module) MediaCleanupPOSTHandler(c *gin.Context)

MediaCleanupPOSTHandler swagger:operation POST /api/v1/admin/media_cleanup mediaCleanup

Clean up remote media older than the specified number of days. Also cleans up unused headers + avatars from the media cache.

---
tags:
- admin

consumes:
- application/json
- application/xml
- application/x-www-form-urlencoded

produces:
- application/json

security:
- OAuth2 Bearer:
	- admin

responses:
	'200':
		description: >-
			Echos the number of days requested.
			The cleanup is performed asynchronously after the request completes.
	'400':
		description: bad request
	'401':
		description: unauthorized
	'403':
		description: forbidden
	'404':
		description: not found
	'406':
		description: not acceptable
	'500':
		description: internal server error

func (*Module) Route

func (m *Module) Route(r router.Router) error

Route attaches all routes from this module to the given router

Jump to

Keyboard shortcuts

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