Overview

Application level settings allow you to configure settings that impact all the channel types in your app. Our backend SDKs make it easy to change the app settings. You can also change most of these using the CLI or the dashboard. Here’s an example on changing the disable_auth_checks setting:

// disable auth checks, allows dev token usage
	settings := NewAppSettings().SetDisableAuth(true)
	err = client.UpdateAppSettings(settings)
	if err != nil {
		log.Fatalf("Err: %v", err)
	}

	// re-enable auth checks
	err = client.UpdateAppSettings(NewAppSettings().SetDisableAuth(false))
	if err != nil {
		log.Fatalf("Err: %v", err)
	}

A full overview of available settings can be found below:

Permissions

The following app settings allow you to control how permissions work for your app:

NAMEDESCRIPTIONDEFAULT
disable_auth_checksDisabled authentication. Convenient during testing and allows you to use devTokens on the client side. Should not be used in production.false
disable_permissions_checksGives all users full permissions to edit messages, delete them etc. Again not recommended in a production setting, only useful for development.false

Push

NAMEDESCRIPTIONDEFAULT
apn_configAPN config object. See details.
firebase_configFirebase config object. See details.
huawei_configHuawei config object. See details.
xiaomi_configXiaomi config object. See details.
push_configGlobal config object. See details.

CDN

NAMEDESCRIPTIONDEFAULT
cdn_expiration_secondsCDN URL expiration time. See details.1209600 (14 days)

Hooks

Hooks enable you to listen to changes in chat. You can use either webhooks or SQS.

NAMEDESCRIPTIONDEFAULT
webhook_urlThis webhook is useful when you want your server application to receive all important events happening in the Stream Chat-
custom_action_handler_urlThis webhook reacts to custom /slash commands and actions on those commands/ MML-
before_message_send_hook_urlThis webhook allows you to modify or moderate message content before sending it to the chat for everyone to see-
sqs_urlYour SQS url-
sqs_keyThe key for SQS queue-
sqs_secretThe secret for your SQS queue-

Moderation & Translation

The following settings allow you to control moderation for your chat:

NAMEDESCRIPTIONDEFAULT
image_moderation_labelsModeration scores returned from the external image moderation API-
image_moderation_enabledIf image moderation AI should be turned on-
enforce_unique_usernamesIf Stream should enforce username uniqueness. This prevents people from joining the chat as “elonmusk” while “elonmusk” is presenting.-
auto_translation_enabledIf Stream should automatically translate messages-
async_url_enrich_enabledIf url enrichment should be done async. It will trigger message.updated event-

File Uploads

You can set restrictions on file uploads by including a file_upload_config object. You can set either an inclusive list using allowed_file_extensions and allowed_mime_types or an exclusive list using blocked_file_extensions and blocked_mime_types.

The file_upload_config object accepts the following fields:

NAMEDESCRIPTIONExampleDefault
allowed_file_extensionsAn array of file types that the user can submit. Files with an extension that does not match the values in this array will be rejected.[“.tar”, “.png”, “.jpg”]-
blocked_file_extensionsAn array of file types that the user can submit. Files with an extension that does not match the values in this array will be rejected.[“.tar”, “.png”, “.jpg”]-
allowed_mime_typesAn array of file MIME types that the user can submit. Files with an MIME type that does not match the values in this array will be rejected. Must follow the type/ subtype pattern.[“text/css”, “text/plain”, “image/png”]-
blocked_mime_typesAn array of file types that the user can submit. Files with an MIME type that does not match the values in this array will be rejected. Must follow the type/ subtype pattern.[“text/css”, “text/plain”, “image/png”]-
size_limitA number that represents the maximum accepted file size in bytes. In case its 0 the default maximum is used.104857600

For example, the following code shows how to block all attempts to upload any files that are not.csv:

settings := &AppSettings{FileUploadConfig: &FileUploadConfig{
	AllowedFileExtensions: []string{".csv"},
	AllowedMimeTypes:   []string{"text/csv"},
}}

resp, err = client.UpdateAppSettings(ctx, settings)

Image Uploads

You can set restrictions on file uploads by including an image_upload_config object. You can set either an inclusive list using allowed_file_extensions and allowed_mime_types or an exclusive list using blocked_file_extensions and blocked_mime_types.

The image_upload_config object accepts the following fields:

NAMEDESCRIPTIONExampleDefault
allowed_file_extensionsAn array of file types that the user can submit. Files with an extension that does not match the values in this array will be rejected.[“.gif”, “.png”, “.jpg”]-
blocked_file_extensionsAn array of file types that the user can submit. Files with an extension that does not match the values in this array will be rejected.[“.tar”, “.tiff”, “.jpg”]-
allowed_mime_typesAn array of file MIME types that the user can submit. Files with an MIME type that does not match the values in this array will be rejected. Must follow the type/ subtype pattern.[“image/jpeg”, “image/svg+xml”, “image/png”]-
blocked_mime_typesAn array of file types that the user can submit. Files with an MIME type that does not match the values in this array will be rejected. Must follow the type/ subtype pattern.[“text/css”, “text/plain”, “image/tiff”]-
size_limitA number that represents the maximum accepted file size in bytes. In case its 0 the default maximum is used.104857600

For example, the following code shows how to block all attempts to upload any files that are not gif, jpeg, or png files:

settings := &AppSettings{ImageUploadConfig: &FileUploadConfig{
	AllowedFileExtensions: []string{".gif", ".jpeg", ".png"},
	AllowedMimeTypes:   []string{"image/gif", "image/jpeg", "image/png"},
}}

resp, err = client.UpdateAppSettings(ctx, settings)

Stream allowed types for images are: image/bmp, image/gif, image/jpeg, image/png, image/webp, image/heic, image/heic-sequence, image/heif, image/heif-sequence, image/svg+xml. Applications can set a more restrictive list, but would not be allowed to set a less restrictive list.

© Getstream.io, Inc. All Rights Reserved.