diff --git a/docs/api/swagger.yaml b/docs/api/swagger.yaml index 59e698596..851106398 100644 --- a/docs/api/swagger.yaml +++ b/docs/api/swagger.yaml @@ -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. diff --git a/docs/configuration/media.md b/docs/configuration/media.md index e49b59dd3..b75a94d15 100644 --- a/docs/configuration/media.md +++ b/docs/configuration/media.md @@ -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. # diff --git a/example/config.yaml b/example/config.yaml index c2f9667c3..acabd4e22 100644 --- a/example/config.yaml +++ b/example/config.yaml @@ -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. # diff --git a/internal/api/model/instance.go b/internal/api/model/instance.go index 2a085c082..73aa8ef82 100644 --- a/internal/api/model/instance.go +++ b/internal/api/model/instance.go @@ -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. diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index 659f47ab4..ffd971040 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -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 diff --git a/internal/typeutils/internaltofrontend_test.go b/internal/typeutils/internaltofrontend_test.go index f38e815f9..63e242f79 100644 --- a/internal/typeutils/internaltofrontend_test.go +++ b/internal/typeutils/internaltofrontend_test.go @@ -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,