[feature] Add description_limit to /api/v2/instance, increase default limit to 5k (#4140)

Closes https://codeberg.org/superseriousbusiness/gotosocial/issues/4131 by adding `description_limit` to the `api/v2/instance` response. Also increases default sizes to default status length to allow people to more easily describe things like screenshots of text.

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4140
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi
2025-05-06 09:58:47 +00:00
committed by tobi
parent 57fc267b5c
commit cf93d3af0a
6 changed files with 38 additions and 7 deletions

View File

@ -1593,6 +1593,23 @@ definitions:
x-go-package: code.superseriousbusiness.org/gotosocial/internal/api/model
instanceConfigurationMediaAttachments:
properties:
description_limit:
description: |-
The maximum size of a description, in characters.
Omitted for /api/v1/instance response.
example: 5000
format: int64
type: integer
x-go-name: DescriptionLimit
description_minimum:
description: |-
The minimum size required for a description, in characters.
Omitted if zero/not set.
Omitted for /api/v1/instance response.
example: 200
format: int64
type: integer
x-go-name: DescriptionMinimum
image_matrix_limit:
description: |-
Max allowed image size in pixels as height*width.

View File

@ -50,9 +50,9 @@ media-remote-max-size: 40MiB
media-description-min-chars: 0
# Int. Maximum amount of characters permitted in an image or video description.
# Examples: [1000, 1500, 3000]
# Default: 1500
media-description-max-chars: 1500
# Examples: [1000, 5000, 10000]
# Default: 5000
media-description-max-chars: 5000
# Size. Max size in bytes of emojis uploaded to this instance via the admin API.
#

View File

@ -580,9 +580,9 @@ media-remote-max-size: 40MiB
media-description-min-chars: 0
# Int. Maximum amount of characters permitted in an image or video description.
# Examples: [1000, 1500, 3000]
# Default: 1500
media-description-max-chars: 1500
# Examples: [1000, 5000, 10000]
# Default: 5000
media-description-max-chars: 5000
# Size. Max size in bytes of emojis uploaded to this instance via the admin API.
#

View File

@ -120,6 +120,17 @@ type InstanceConfigurationMediaAttachments struct {
//
// example: 16777216
VideoMatrixLimit int `json:"video_matrix_limit"`
// The maximum size of a description, in characters.
// Omitted for /api/v1/instance response.
//
// example: 5000
DescriptionLimit int `json:"description_limit,omitempty"`
// The minimum size required for a description, in characters.
// Omitted if zero/not set.
// Omitted for /api/v1/instance response.
//
// example: 200
DescriptionMinimum int `json:"description_minimum,omitempty"`
}
// InstanceConfigurationPolls models instance poll config parameters.

View File

@ -1966,6 +1966,8 @@ func (c *Converter) InstanceToAPIV2Instance(ctx context.Context, i *gtsmodel.Ins
instance.Configuration.Statuses.CharactersReservedPerURL = instanceStatusesCharactersReservedPerURL
instance.Configuration.Statuses.SupportedMimeTypes = instanceStatusesSupportedMimeTypes
instance.Configuration.MediaAttachments.SupportedMimeTypes = media.SupportedMIMETypes
instance.Configuration.MediaAttachments.DescriptionLimit = config.GetMediaDescriptionMaxChars()
instance.Configuration.MediaAttachments.DescriptionMinimum = config.GetMediaDescriptionMinChars()
// NOTE: we use the local max sizes here
// as it hints to apps like Tusky for image

View File

@ -2501,7 +2501,8 @@ func (suite *InternalToFrontendTestSuite) TestInstanceV2ToFrontend() {
"image_matrix_limit": 2147483647,
"video_size_limit": 41943040,
"video_frame_rate_limit": 2147483647,
"video_matrix_limit": 2147483647
"video_matrix_limit": 2147483647,
"description_limit": 500
},
"polls": {
"max_options": 6,