# Available options:
#
# default            - The default value of the setting. For upload site settings, use the id of the upload seeded in db/fixtures/010_uploads.rb.
# client             - Set to true if the javascript should have access to this setting's value.
# refresh            - Set to true if clients should refresh when the setting is changed.
# min                - For a string setting, the minimum length. For an integer setting, the minimum value.
# max                - For a string setting, the maximum length. For an integer setting, the maximum value.
# regex              - A regex that the value must match.
# validator          - The name of the class that will be use to validate the value of the setting.
# allow_any          - For choice settings allow items not specified in the choice list (default true)
# secret             - Set to true if input type should be password and value needs to be scrubbed from logs (default false).
# enum               - The setting has a fixed set of allowed values, and only one can be chosen.
#                      Set to the class name that defines the set.
# locale_default     - A hash which overrides according to `SiteSetting.default_locale`.
#                      The key should be as the same as possible value of default_locale.
#
#
# type: email    - Must be a valid email address.
# type: username - Must match the username of an existing user.
# type: list     - A list of values, chosen from a set of valid values defined in the choices option.
# type: enum     - A single value, chosen from a set of valid values in the choices option.
#
# A type:list setting with the word 'colors' in its name will make color values have a bold line of the corresponding color
#
required:
  title:
    client: true
    default: "Discourse"
  site_description:
    default: ""
  short_site_description:
    default: ""
    client: true
  contact_email:
    client: true
    default: ""
    type: email
  contact_url:
    client: true
    default: ""
  notification_email:
    default: "noreply@unconfigured.discourse.org"
    type: email
  site_contact_username:
    default: ""
    type: username
  site_contact_group_name:
    default: ""
    type: group
  exclude_rel_nofollow_domains:
    default: ""
    type: list
  company_name:
    default: ""
  governing_law:
    default: ""
  city_for_disputes:
    default: ""

branding:
  logo:
    default: -5
    client: true
    type: upload
  logo_url:
    hidden: true
    default: "/images/d-logo-sketch.png"
  logo_small:
    default: -6
    client: true
    type: upload
  logo_small_url:
    hidden: true
    default: "/images/d-logo-sketch-small.png"
  digest_logo:
    default: ""
    client: true
    type: upload
  digest_logo_url:
    hidden: true
    default: ""
  mobile_logo:
    default: ""
    client: true
    type: upload
  mobile_logo_url:
    hidden: true
    default: ""
  large_icon:
    default: ""
    client: true
    type: upload
  manifest_icon:
    default: ""
    type: upload
  large_icon_url:
    hidden: true
    default: ""
  favicon:
    default: ""
    client: true
    type: upload
  favicon_url:
    hidden: true
    default: "/images/default-favicon.ico"
  apple_touch_icon:
    default: ""
    client: true
    type: upload
  apple_touch_icon_url:
    hidden: true
    default: "/images/default-apple-touch-icon.png"
  opengraph_image:
    default: ""
    type: upload
  default_opengraph_image_url:
    hidden: true
    default: ""
  twitter_summary_large_image:
    default: ""
    type: upload
  twitter_summary_large_image_url:
    hidden: true
    default: ""

basic:
  allow_user_locale:
    client: true
    default: false
  set_locale_from_accept_language_header:
    default: false
    validator: "AllowUserLocaleEnabledValidator"
  support_mixed_text_direction:
    client: true
    default: false
  categories_topics:
    default: 20
    validator: "CategoriesTopicsValidator"
  suggested_topics:
    client: true
    default: 5
    max: 2000
  limit_suggested_to_category:
    default: false
  suggested_topics_unread_max_days_old:
    default: 90
    min: 0
    max: 10000
  suggested_topics_max_days_old:
    default: 365
    min: 7
    max: 10000
  ga_universal_tracking_code:
    client: true
    default: ""
    regex: "^UA-\\d+-\\d+$"
  ga_universal_domain_name:
    client: true
    default: "auto"
  ga_universal_auto_link_domains:
    default: ""
    type: list
  gtm_container_id:
    client: true
    default: ""
    regex: "^GTM-"
  top_menu:
    client: true
    refresh: true
    type: list
    list_type: compact
    default: "latest|new|unread|top|categories"
    regex: "latest"
    regex_error: "site_settings.errors.must_include_latest"
    validator: RegexPresenceValidator
    allow_any: false
    choices:
      - latest
      - new
      - unread
      - top
      - categories
      - read
      - posted
      - bookmarks
  post_menu:
    client: true
    type: list
    default: "read|like|share|flag|edit|bookmark|bookmarkWithReminder|delete|admin|reply"
    allow_any: false
    choices:
      - read
      - like
      - edit
      - flag
      - delete
      - share
      - bookmark
      - admin
      - reply
      - bookmarkWithReminder
  post_menu_hidden_items:
    client: true
    type: list
    default: "flag|bookmark|bookmarkWithReminder|edit|delete|admin"
    allow_any: false
    choices:
      - like
      - edit
      - flag
      - delete
      - share
      - bookmark
      - admin
      - reply
      - bookmarkWithReminder
  share_links:
    client: true
    type: list
    default: "twitter|facebook|email"
    allow_any: false
    choices:
      - twitter
      - facebook
      - email
  desktop_category_page_style:
    client: true
    enum: "CategoryPageStyle"
    default: "categories_and_latest_topics"
  category_colors:
    client: true
    type: list
    list_type: compact
    default: "BF1E2E|F1592A|F7941D|9EB83B|3AB54A|12A89D|25AAE2|0E76BD|652D90|92278F|ED207B|8C6238|231F20|808281|B3B5B4|E45735"
  category_style:
    client: true
    default: "bullet"
    type: enum
    choices:
      - bar
      - box
      - bullet
      - none
  max_category_nesting:
    client: true
    default: 2
    min: 2
    max: 3
    hidden: true
  enable_mobile_theme:
    client: true
    default: true
    hidden: true
  default_theme_id:
    default: -1
    hidden: true
  relative_date_duration:
    client: true
    default: 30
  topics_per_period_in_top_summary:
    default: 20
    min: 1
  topics_per_period_in_top_page:
    default: 50
    min: 1
  top_page_default_timeframe:
    default: "yearly"
    type: enum
    choices:
      - all
      - yearly
      - quarterly
      - monthly
      - weekly
      - daily
  fixed_category_positions:
    client: true
    default: false
  fixed_category_positions_on_create:
    client: true
    default: false
  enable_badges:
    client: true
    default: true
  enable_badge_sql:
    client: true
    default: false
    hidden: true
  enable_whispers:
    client: true
    default: false
  enable_bookmarks_with_reminders:
    client: true
    default: false
    hidden: true
  push_notifications_prompt:
    default: true
    client: true
  push_notifications_icon:
    default: ""
    type: upload
  push_notifications_icon_url:
    hidden: true
    default: ""
  short_title:
    default: ""
    max: 12
  vapid_public_key_bytes:
    default: ""
    client: true
    hidden: true
  vapid_public_key:
    default: ""
    hidden: true
  vapid_private_key:
    default: ""
    hidden: true
  vapid_base_url:
    default: ""
    hidden: true

login:
  invite_only:
    refresh: true
    client: true
    default: false
    validator: "EnableInviteOnlyValidator"
  login_required:
    refresh: true
    client: true
    default: false
  must_approve_users:
    client: true
    default: false
  enable_local_logins:
    client: true
    default: true
  enable_local_logins_via_email:
    client: true
    default: true
    validator: "EnableLocalLoginsViaEmailValidator"
  allow_new_registrations:
    client: true
    default: true
  enable_signup_cta:
    client: true
    default: true
  enable_google_oauth2_logins:
    default: false
  google_oauth2_client_id: ""
  google_oauth2_client_secret:
    default: ""
    secret: true
  google_oauth2_prompt:
    default: ""
    type: list
    choices:
      - ""
      - "none"
      - "consent"
      - "select_account"
  google_oauth2_hd:
    default: ""
  enable_twitter_logins:
    default: false
  twitter_consumer_key:
    default: ""
    regex: "^[\\w+-]+$"
  twitter_consumer_secret:
    default: ""
    regex: "^[\\w+-]+$"
    secret: true
  enable_instagram_logins:
    default: false
  instagram_consumer_key:
    default: ""
    regex: "^[a-z0-9]+$"
  instagram_consumer_secret:
    default: ""
    regex: "^[a-z0-9]+$"
    secret: true
  enable_facebook_logins:
    default: false
  facebook_app_id:
    default: ""
    regex: "^\\d+$"
  facebook_app_secret:
    default: ""
    regex: "^[a-f0-9]+$"
    secret: true
  enable_github_logins:
    default: false
  github_client_id:
    default: ""
    regex: "^[a-f0-9]+$"
  github_client_secret:
    default: ""
    regex: "^[a-f0-9]+$"
    secret: true
  enable_discord_logins:
    default: false
  discord_client_id:
    default: ""
  discord_secret:
    default: ""
    secret: true
  discord_trusted_guilds:
    default: ""
    type: list
  enable_sso:
    client: true
    default: false
    validator: "EnableSsoValidator"
  sso_allows_all_return_paths: false
  enable_sso_provider: false
  verbose_sso_logging: false
  verbose_auth_token_logging:
    hidden: true
    default: true
  max_suspicious_distance_km:
    hidden: true
    default: 500
  sso_url:
    default: ""
    regex: '^https?:\/\/.+[^\/]$'
  sso_secret:
    default: ""
    secret: true
  sso_provider_secrets:
    default: ""
    type: list
    list_type: secret
    secret: true
    placeholder:
      key: "sso_provider.key_placeholder"
      value: "sso_provider.value_placeholder"
  sso_overrides_groups: false
  sso_overrides_bio: false
  sso_overrides_email:
    default: false
    validator: "SsoOverridesEmailValidator"
    client: true
  sso_overrides_username: false
  sso_overrides_name: false
  sso_overrides_avatar:
    default: false
    client: true
  sso_overrides_profile_background: false
  sso_overrides_card_background: false
  sso_not_approved_url: ""
  email_domains_blacklist:
    default: "mailinator.com"
    type: list
  email_domains_whitelist:
    default: ""
    type: list
  hide_email_address_taken: false
  log_out_strict: true
  pending_users_reminder_delay:
    min: -1
    default: 8
  maximum_session_age:
    default: 1440
    min: 1
    max: 175200
users:
  min_username_length:
    client: true
    default: 3
    min: 1
    max: 60
    validator: "MinUsernameLengthValidator"
  max_username_length:
    client: true
    default: 20
    min: 8
    max: 60
    validator: "MaxUsernameLengthValidator"
  unicode_usernames:
    default: false
    client: true
    validator: "UnicodeUsernameValidator"
  unicode_username_character_whitelist:
    validator: "UnicodeUsernameWhitelistValidator"
    default: ""
    locale_default:
      cs: "[ěščřžýáíéóůúďťňĚŠČŘŽÝÁÍÉÓŮÚĎŤŇ]"
      de: "[äöüßÄÖÜẞ]"
      fi: "[åäöÅÄÖ]"
      ja: '[\p{Han}\p{Katakana}\p{Hiragana}]'
      ko: '\p{Hangul}'
      zh_CN: '\p{Han}'
      zh_TW: '\p{Han}'
  reserved_usernames:
    type: list
    list_type: compact
    default: "admin|moderator|administrator|mod|sys|system|community|info|you|name|username|user|nickname|discourse|discourseorg|discourseforum|support|hp"
  min_password_length:
    client: true
    default: 10
    min: 8
    max: 500
  min_admin_password_length:
    client: true
    default: 15
    min: 8
    max: 500
  password_unique_characters:
    default: 6
    min: 1
    max: 10
  block_common_passwords: true
  username_change_period: 3
  email_editable: true
  logout_redirect:
    client: true
    default: ""
  full_name_required:
    client: true
    default: false
  enable_names:
    client: true
    default: true
  invite_expiry_days:
    default: 30
  invites_per_page:
    client: true
    default: 40
    hidden: true
  delete_user_max_post_age:
    client: true
    default: 60
  delete_all_posts_max:
    client: true
    default: 15
    min: 1
  redirect_users_to_top_page: true
  prioritize_username_in_ux:
    client: true
    default: true
  email_token_valid_hours:
    default: 48
    min: 1
  purge_unactivated_users_grace_period_days:
    default: 14
  public_user_custom_fields:
    type: list
    default: ""
  staff_user_custom_fields:
    type: list
    default: ""
  enable_user_directory:
    client: true
    default: true
  allow_anonymous_posting:
    default: false
    client: true
  anonymous_posting_min_trust_level:
    default: 1
    enum: "TrustLevelSetting"
    client: true
  anonymous_account_duration_minutes:
    default: 10080
    max: 99000
  hide_user_profiles_from_public:
    default: false
    client: true
  allow_featured_topic_on_user_profiles:
    default: true
    client: true
  show_inactive_accounts:
    default: false
  user_website_domains_whitelist:
    default: ""
    type: list
  hide_suspension_reasons:
    default: false
    client: true
  log_personal_messages_views: false
  ignored_users_count_message_threshold:
    default: 5
    client: true
    min: 1
  ignored_users_message_gap_days:
    default: 365
    client: true
    min: 1
  clean_up_inactive_users_after_days:
    default: 730
    min: 0
    max: 3650
  user_selected_primary_groups:
    default: false
    client: true

groups:
  enable_group_directory:
    client: true
    default: true
  group_in_subject:
    default: false
  enable_category_group_review:
    client: true
    default: false

posting:
  min_post_length:
    client: true
    min: 1
    default: 20
    locale_default:
      ja: 8
      zh_CN: 8
      zh_TW: 8
  min_first_post_length:
    client: true
    min: 1
    default: 20
    locale_default:
      ja: 8
      zh_CN: 8
      zh_TW: 8
  min_personal_message_post_length:
    client: true
    min: 1
    default: 10
    locale_default:
      ja: 3
      zh_CN: 3
      zh_TW: 3
  max_post_length:
    client: true
    default: 32000
    max: 99000
  topic_featured_link_enabled:
    client: true
    default: true
  body_min_entropy:
    default: 7
    locale_default:
      ja: 3
      zh_CN: 3
      zh_TW: 3
  min_topic_title_length:
    client: true
    default: 15
    min: 1
    locale_default:
      ja: 6
      zh_CN: 6
      zh_TW: 6
  max_topic_title_length:
    client: true
    default: 255
    min: 5
    max: 255
  title_min_entropy:
    default: 10
    locale_default:
      ja: 3
      zh_CN: 3
      zh_TW: 3
  allow_uppercase_posts:
    default: false
    locale_default:
      ja: true
  max_consecutive_replies:
    default: 3
  title_prettify:
    default: true
    locale_default:
      ja: false
      zh_CN: false
      zh_TW: false
  title_remove_extraneous_space:
    default: false
    locale_default:
      en: true
      en_US: true
  title_fancy_entities: true
  min_personal_message_title_length:
    client: true
    default: 2
    min: 1
  max_emojis_in_title: 1
  allow_uncategorized_topics:
    client: true
    default: true
    refresh: true
  allow_duplicate_topic_titles: false
  min_title_similar_length:
    client: true
    default: 10
    locale_default:
      ja: 4
      zh_CN: 4
      zh_TW: 4
  enable_personal_messages:
    default: true
    client: true
  enable_system_message_replies:
    default: true
  enable_personal_email_messages:
    hidden: true
    default: false
    client: true
    validator: "EnablePrivateEmailMessagesValidator"
  editing_grace_period: 300
  editing_grace_period_max_diff: 100
  editing_grace_period_max_diff_high_trust: 400
  staff_edit_locks_post: false
  shared_drafts_category:
    type: category
    default: ""
  post_edit_time_limit:
    default: 1440
    max: 10080
  tl2_post_edit_time_limit:
    default: 43200
    max: 525600
  edit_history_visible_to_public:
    client: true
    default: true
  delete_removed_posts_after:
    client: true
    default: 24
  traditional_markdown_linebreaks:
    client: true
    default: false
  enable_markdown_typographer:
    client: true
    default: true
  enable_markdown_linkify:
    client: true
    default: true
  markdown_linkify_tlds:
    client: true
    type: list
    default: "com|net|org|io|co|tv|ru|cn|us|uk|me|de|fr|fi|gov"
    list_type: compact
  markdown_typographer_quotation_marks:
    client: true
    type: list
    list_type: compact
    validator: "MarkdownTypographerQuotationMarksValidator"
    default: "“|”|‘|’"
    locale_default:
      de: "„|“|‚|‘"
      fr: "«\xA0|\xA0»|‹\xA0|\xA0›"
  enable_rich_text_paste:
    client: true
    default: true
  suppress_reply_directly_below:
    client: true
    default: true
  suppress_reply_directly_above:
    client: true
    default: true
  suppress_reply_when_quoting:
    default: true
  remove_full_quote:
    default: true
  max_reply_history:
    default: 1
    client: true
  post_undo_action_window_mins: 10
  enable_mentions:
    default: true
    client: true
  max_mentions_per_post: 10
  max_users_notified_per_group_mention: 100
  newuser_max_replies_per_topic: 3
  newuser_max_mentions_per_post: 2
  title_max_word_length:
    default: 30
    locale_default:
      ja: 50
      ko: 50
      zh_CN: 50
      zh_TW: 50
  whitelisted_link_domains:
    default: ""
    type: list
  newuser_max_links: 2
  newuser_max_images:
    client: true
    default: 1
  newuser_max_attachments:
    client: true
    default: 0
  post_excerpt_maxlength:
    default: 300
    locale_default:
      ja: 120
      zh_CN: 120
      zh_TW: 120
  show_pinned_excerpt_mobile:
    client: true
    default: true
  show_pinned_excerpt_desktop:
    client: true
    default: true
  display_name_on_posts:
    client: true
    default: false
  show_time_gap_days:
    default: 7
    client: true
  short_progress_text_threshold:
    client: true
    default: 10000
    max: 99000
  default_code_lang:
    client: true
    default: "auto"
  warn_reviving_old_topic_age: 180
  autohighlight_all_code:
    client: true
    default: false
  highlighted_languages:
    default: "apache|bash|cs|cpp|css|coffeescript|diff|xml|http|ini|json|java|javascript|makefile|markdown|nginx|objectivec|ruby|perl|php|python|sql|handlebars"
    choices: "HighlightJs.languages"
    type: list
    client: true
    list_type: compact
  delete_old_hidden_posts: true
  enable_emoji:
    default: true
    client: true
  enable_emoji_shortcuts:
    default: true
    client: true
  emoji_set:
    default: "twitter"
    client: true
    enum: "EmojiSetSiteSetting"
  emoji_autocomplete_min_chars:
    client: true
    default: 0
    locale_default:
      fr: 1
  enable_inline_emoji_translation:
    client: true
    default: false
    locale_default:
      zh_CN: true
      zh_TW: true
      ja: true
      ko: true
  approve_post_count:
    default: 0
  approve_unless_trust_level:
    default: 0
    enum: "TrustLevelSetting"
  approve_new_topics_unless_trust_level:
    default: 0
    enum: "TrustLevelSetting"
  approve_suspect_users:
    default: false
  approve_unless_staged:
    default: false
  notify_about_queued_posts_after:
    default: 24
  auto_close_messages_post_count:
    default: 500
  auto_close_topics_post_count:
    default: 10000
  code_formatting_style:
    client: true
    type: enum
    default: "4-spaces-indent"
    choices:
      - 4-spaces-indent
      - code-fences
  embed_any_origin: false
  embed_topics_list: false
  embed_truncate:
    default: true
  embed_support_markdown:
    default: false
  embed_whitelist_selector:
    default: ""
  allowed_href_schemes:
    client: true
    default: ""
    type: list
    list_type: compact
  max_allowed_message_recipients:
    default: 30
    min: 1
  watched_words_regular_expressions:
    client: true
    default: false
  enable_advanced_editor_preview_sync:
    hidden: true
    default: false
    client: true
  old_post_notice_days:
    default: 14
    client: true
  new_user_notice_tl:
    default: 2
    enum: "TrustLevelSetting"
  returning_user_notice_tl:
    default: 2
    enum: "TrustLevelSetting"
  returning_users_days:
    default: 120

email:
  email_time_window_mins:
    default: 10
    client: true
  personal_email_time_window_seconds: 20
  email_posts_context: 5
  digest_min_excerpt_length:
    default: 100
    locale_default:
      ja: 50
      zh_CN: 50
      zh_TW: 50
  digest_topics:
    default: 5
    min: 1
    max: 20
  digest_posts:
    default: 5
    min: 0
    max: 20
  digest_other_topics:
    default: 5
    min: 0
    max: 20
  suppress_digest_email_after_days:
    default: 365
  digest_suppress_categories:
    type: category_list
    default: ""
  disable_digest_emails:
    default: false
    client: true
  apply_custom_styles_to_digest: true
  email_accent_bg_color: "#2F70AC"
  email_accent_fg_color: "#FFFFFF"
  email_link_color: "#006699"
  show_topic_featured_link_in_digest: false
  email_custom_headers: "Auto-Submitted: auto-generated"
  email_subject: "[%{site_name}] %{optional_pm}%{optional_cat}%{topic_title}"
  reply_by_email_enabled:
    default: false
    validator: "ReplyByEmailEnabledValidator"
  reply_by_email_address:
    default: ""
    validator: "ReplyByEmailAddressValidator"
  alternative_reply_by_email_addresses:
    default: ""
    validator: "AlternativeReplyByEmailAddressesValidator"
  find_related_post_with_key:
    default: true
  manual_polling_enabled:
    default: false
  pop3_polling_enabled:
    default: false
    validator: "POP3PollingEnabledSettingValidator"
  pop3_polling_ssl: true
  pop3_polling_openssl_verify: true
  pop3_polling_period_mins: 5
  pop3_polling_host: ""
  pop3_polling_port: 995
  pop3_polling_username: ""
  pop3_polling_password:
    default: ""
    secret: true
  pop3_polling_delete_from_server: true
  log_mail_processing_failures: false
  incoming_email_prefer_html: true
  strip_incoming_email_lines: false
  email_in:
    default: false
    client: true
  email_in_min_trust:
    default: 2
    enum: "TrustLevelSetting"
  email_in_authserv_id:
    default: ""
  email_in_spam_header:
    type: enum
    default: "none"
    choices:
      - none
      - X-Spam-Flag
      - X-Spam-Status
      - X-SES-Spam-Verdict
  email_prefix: ""
  email_site_title: ""
  disable_emails:
    client: true
    type: enum
    default: "no"
    choices:
      - "no"
      - "yes"
      - "non-staff"
  strip_images_from_short_emails: true
  short_email_length: 2800
  display_name_on_email_from:
    default: true
  unsubscribe_via_email:
    default: true
  unsubscribe_via_email_footer:
    default: false
  disallow_reply_by_email_after_days:
    default: 90
  delete_email_logs_after_days:
    default: 90
  max_emails_per_day_per_user: 100
  enable_staged_users: true
  maximum_staged_users_per_email: 10
  auto_generated_whitelist:
    default: ""
    type: list
  block_auto_generated_emails: true
  ignore_by_title:
    type: list
    default: ""
  mailgun_api_key:
    default: ""
    regex: '^((key-)?\h{32}|\h{32}-\h{8}-\h{8})$'
    secret: true
  bounce_score_threshold:
    client: true
    default: 4
    min: 1
  bounce_score_erode_on_send:
    default: 0.1
    hidden: true
  soft_bounce_score:
    default: 1
    min: 1
  hard_bounce_score:
    default: 2
    min: 2
  reset_bounce_score_after_days:
    default: 30
  attachment_content_type_blacklist:
    type: list
    default: "pkcs7|x-vcard"
    list_type: compact
  attachment_filename_blacklist:
    type: list
    default: "smime.p7s|signature.asc|winmail.dat"
    list_type: compact
  forwarded_emails_behaviour:
    type: enum
    default: hide
    choices:
      - hide
      - quote
      - create_replies
  always_show_trimmed_content: false
  private_email: false
  email_custom_template:
    default: ""
    hidden: true
  email_custom_css:
    default: ""
    hidden: true
  email_custom_css_compiled:
    default: ""
    hidden: true
  email_total_attachment_size_limit_kb:
    default: 0
    max: 51200
  post_excerpts_in_emails: false
  raw_email_max_length: 220000
  raw_rejected_email_max_length: 4000
  delete_rejected_email_after_days: 90

files:
  max_image_size_kb:
    client: true
    default: 4096
    max: 102400
  max_attachment_size_kb:
    client: true
    default: 4096
    max: 1024000
  max_image_megapixels:
    default: 40
    min: 5
    max: 150
  max_export_file_size_kb:
    hidden: true
    default: 50000
    max: 1024000
  theme_authorized_extensions:
    default: "jpg|jpeg|png|woff|woff2|svg|eot|ttf|otf|gif|js"
    type: list
    list_type: compact
  authorized_extensions:
    client: true
    default: "jpg|jpeg|png|gif"
    refresh: true
    type: list
    list_type: compact
  authorized_extensions_for_staff:
    client: true
    default: ""
    refresh: true
    type: list
    list_type: compact
  export_authorized_extensions:
    hidden: true
    default: "zip"
    type: list
    list_type: compact
  responsive_post_image_sizes:
    default: "1|1.5|2"
    type: list
    list_type: compact
  crawl_images:
    default: true
  max_image_width:
    client: true
    default: 690
  max_image_height:
    client: true
    default: 500
  download_remote_images_to_local:
    default: true
  download_remote_images_threshold: 10
  download_remote_images_max_days_old:
    default: 30
    min: 1
    max: 10000
  disabled_image_download_domains:
    type: list
    default: ""
  create_thumbnails: true
  clean_up_uploads: true
  clean_orphan_uploads_grace_period_hours: 48
  purge_deleted_uploads_grace_period_days:
    default: 30
  prevent_anons_from_downloading_files:
    default: false
    client: true
  secure_media:
    default: false
    client: true
  enable_s3_uploads:
    default: false
    client: true
  s3_use_iam_profile:
    default: false
  s3_access_key_id:
    default: ""
    secret: true
  s3_secret_access_key:
    default: ""
    secret: true
  s3_region:
    default: "us-east-1"
    enum: "S3RegionSiteSetting"
  s3_upload_bucket:
    default: ""
    regex: '^[a-z0-9\-\/_]+$' # can't use '.' when using HTTPS
  s3_endpoint:
    default: ""
    regex: '^https?:\/\/.+[^\/]$'
  s3_cdn_url:
    default: ""
    regex: '^https?:\/\/.+[^\/]$'
  s3_configure_tombstone_policy:
    default: true
  enable_s3_inventory:
    default: false
  s3_configure_inventory_policy:
    default: true
    hidden: true
  allow_profile_backgrounds:
    client: true
    default: true
  automatically_download_gravatars: true
  allow_uploaded_avatars:
    client: true
    default: true
  allow_animated_avatars:
    client: true
    default: false
  allow_animated_thumbnails: true
  default_avatars:
    default: ""
    type: url_list
    client: true
  avatar_sizes:
    default: "20|25|32|45|60|120"
    type: list
    list_type: compact
  external_system_avatars_enabled:
    default: true
    client: true
    validator: "ExternalSystemAvatarsValidator"
  external_system_avatars_url:
    default: "/letter_avatar_proxy/v4/letter/{first_letter}/{color}/{size}.png"
    client: true
    regex: '^((https?:)?\/)?\/.+[^\/]'
  restrict_letter_avatar_colors:
    default: ""
    type: list
    list_type: compact
    validator: "ColorListValidator"
  selectable_avatars_enabled:
    default: false
    client: true
  selectable_avatars:
    default: ""
    type: uploaded_image_list
  allow_all_attachments_for_group_messages: false
  png_to_jpg_quality:
    default: 95
    min: 1
    max: 100
  allow_staff_to_upload_any_file_in_pm:
    default: true
    client: true
  strip_image_metadata: true
  min_ratio_to_crop:
    type: float
    default: 0.45 # 90% of 18:9
    min: 0
    max: 1
  simultaneous_uploads:
    client: true
    default: 5
    min: 0
    max: 20
  decompressed_theme_max_file_size_mb:
    default: 1000
    hidden: true
  decompressed_backup_max_file_size_mb:
    default: 100000
    hidden: true

trust:
  default_trust_level:
    default: 0
    enum: "TrustLevelSetting"
  default_invitee_trust_level:
    default: 1
    enum: "TrustLevelSetting"
  min_trust_to_create_topic:
    default: 0
    enum: "TrustLevelSetting"
  min_trust_to_edit_wiki_post:
    default: 1
    enum: "TrustLevelSetting"
  min_trust_to_edit_post:
    default: 0
    enum: "TrustLevelSetting"
  min_trust_to_allow_self_wiki:
    default: 3
    enum: "TrustLevelSetting"
  min_trust_to_send_messages:
    default: 1
    enum: "TrustLevelSetting"
  min_trust_to_send_email_messages:
    hidden: true
    default: 4
    enum: "TrustLevelSetting"
  min_trust_to_flag_posts:
    default: 1
    enum: "TrustLevelSetting"
  min_trust_to_post_links:
    default: 0
    enum: "TrustLevelSetting"
  min_trust_to_post_images:
    default: 0
    enum: "TrustLevelSetting"
  allow_flagging_staff: true
  send_tl1_welcome_message: true
  tl1_requires_topics_entered: 5
  tl1_requires_read_posts:
    default: 30
    client: true
  tl1_requires_time_spent_mins: 10
  tl2_requires_topics_entered: 20
  tl2_requires_read_posts: 100
  tl2_requires_time_spent_mins: 60
  tl2_requires_days_visited:
    default: 15
  tl2_requires_likes_received: 1
  tl2_requires_likes_given: 1
  tl2_requires_topic_reply_count: 3
  tl3_time_period:
    default: 100
    min: 1
    max: 1000000
  tl3_requires_days_visited:
    default: 50
  tl3_requires_topics_replied_to:
    default: 10
  tl3_requires_topics_viewed:
    default: 25
    max: 100
  tl3_requires_topics_viewed_cap:
    default: 500
  tl3_requires_posts_read:
    default: 25
    max: 100
  tl3_requires_posts_read_cap:
    default: 20000
    max: 99000
  tl3_requires_topics_viewed_all_time:
    default: 200
  tl3_requires_posts_read_all_time:
    default: 500
  tl3_requires_max_flagged:
    default: 5
  tl3_promotion_min_duration:
    default: 14
    max: 10000
  tl3_requires_likes_given:
    default: 30
  tl3_requires_likes_received:
    default: 20
  tl3_links_no_follow:
    default: false
    client: true
  trusted_users_can_edit_others:
    default: true

security:
  detailed_404: false
  enforce_second_factor:
    client: true
    type: enum
    default: "no"
    choices:
      - "no"
      - "staff"
      - "all"
  force_https:
    default: false
  same_site_cookies:
    default: Lax
    type: enum
    choices:
      - Lax
      - Strict
      - Disabled
    regex: "^(Lax|Strict|Disabled)$"
  enable_escaped_fragments: true
  allow_index_in_robots_txt: true
  moderators_create_categories: false
  moderators_view_emails:
    client: true
    default: false
  non_crawler_user_agents:
    hidden: true
    default: "trident|webkit|gecko|chrome|safari|msie|opera|goanna|discourse"
    type: list
    list_type: compact
  crawler_user_agents:
    hidden: true
    default: "rss|bot|spider|crawler|facebook|archive|wayback|ping|monitor|lighthouse"
    type: list
    list_type: compact
  crawler_check_bypass_agents:
    hidden: true
    default: "cubot"
  cors_origins:
    default: ""
    type: list
  use_admin_ip_whitelist:
    default: false
    client: true
  blacklist_ip_blocks:
    default: ""
    type: list
    list_type: compact
  whitelist_internal_hosts:
    default: ""
    type: list
  allowed_iframes:
    default: "https://www.google.com/maps/embed?|https://www.openstreetmap.org/export/embed.html?|https://calendar.google.com/calendar/embed?|https://codepen.io/"
    type: list
    client: true
  whitelisted_crawler_user_agents:
    type: list
    default: ""
    list_type: compact
  blacklisted_crawler_user_agents:
    type: list
    default: "mauibot|semrushbot|ahrefsbot|blexbot|seo spider"
    list_type: compact
  slow_down_crawler_user_agents:
    type: list
    default: "bingbot"
    list_type: compact
  slow_down_crawler_rate: 60
  content_security_policy:
    default: true
  content_security_policy_report_only:
    default: false
  content_security_policy_collect_reports:
    default: false
  content_security_policy_script_src:
    type: list
    default: ""
  invalidate_inactive_admin_email_after_days:
    default: 365
    min: 0
    max: 2000
  allow_embedding_site_in_an_iframe:
    default: false
    hidden: true

onebox:
  enable_flash_video_onebox: false
  post_onebox_maxlength:
    default: 500
    locale_default:
      ja: 200
      zh_CN: 200
      zh_TW: 200
  onebox_domains_blacklist:
    default: ""
    type: list
    list_type: compact
  max_oneboxes_per_post:
    default: 50
    client: true
  inline_onebox_domains_whitelist:
    default: ""
    type: list
    list_type: compact
  enable_inline_onebox_on_all_domains:
    default: false
  force_custom_user_agent_hosts:
    default: "http://codepen.io"
    type: list
spam:
  add_rel_nofollow_to_user_content: true
  hide_post_sensitivity:
    type: enum
    enum: "ReviewableSensitivitySetting"
    default: 6
  cooldown_minutes_after_hiding_posts: 10
  silence_new_user_sensitivity:
    type: enum
    enum: "ReviewableSensitivitySetting"
    default: 3
  num_users_to_silence_new_user: 3
  notify_mods_when_user_silenced: false
  flag_sockpuppets: false
  newuser_spam_host_threshold: 3
  white_listed_spam_host_domains:
    default: ""
    type: list
  levenshtein_distance_spammer_emails:
    default: 2
    max: 3
  max_new_accounts_per_registration_ip: 3
  min_ban_entries_for_roll_up: 5
  max_age_unmatched_emails: 365
  max_age_unmatched_ips: 365
  num_flaggers_to_close_topic: 5
  auto_close_topic_sensitivity:
    type: enum
    enum: "ReviewableSensitivitySetting"
    default: 9
  num_hours_to_close_topic:
    default: 4
    min: 1
  auto_respond_to_flag_actions: true
  min_first_post_typing_time: 3000
  auto_silence_fast_typers_on_first_post: true
  auto_silence_fast_typers_max_trust_level: 0
  auto_silence_first_post_regex: ""
  high_trust_flaggers_auto_hide_posts: true
  cooldown_hours_until_reflag: 
    default: 24
    min: 0

  reviewable_claiming:
    client: true
    type: enum
    default: disabled
    choices:
      - disabled
      - optional
      - required

  reviewable_default_topics:
    default: false
    client: true
  reviewable_default_visibility:
    client: true
    type: enum
    default: low
    enum: "ReviewablePrioritySetting"

rate_limits:
  unique_posts_mins: 5
  rate_limit_create_topic: 15
  rate_limit_create_post: 5
  rate_limit_new_user_create_topic: 120
  rate_limit_new_user_create_post: 30
  max_topics_per_day: 20
  max_personal_messages_per_day: 20
  max_likes_per_day: 50
  max_bookmarks_per_day: 20
  max_flags_per_day: 20
  max_edits_per_day: 30
  max_invites_per_day: 10
  max_topic_invitations_per_day: 30
  max_topics_in_first_day: 3
  max_replies_in_first_day: 10
  tl2_additional_likes_per_day_multiplier: 1.5
  tl3_additional_likes_per_day_multiplier: 2
  tl4_additional_likes_per_day_multiplier: 3
  alert_admins_if_errors_per_minute:
    client: true
    default: 0
  alert_admins_if_errors_per_hour:
    client: true
    default: 0
  max_prints_per_hour_per_user:
    default: 5
    client: true
  max_logins_per_ip_per_hour:
    min: 1
    default: 30
  max_logins_per_ip_per_minute:
    min: 1
    default: 6
  max_post_deletions_per_minute:
    min: 1
    default: 2
  max_post_deletions_per_day:
    min: 1
    default: 10

developer:
  force_hostname:
    hidden: true
    default: ""
  port:
    hidden: true
    default: ""
  enable_long_polling:
    client: true
    default: true
  long_polling_interval:
    default: 25000
    max: 25000
  long_polling_base_url:
    client: true
    default: "/"
  background_polling_interval:
    client: true
    default: 60000
    max: 99000
  polling_interval:
    client: true
    default: 3000
    max: 99000
  anon_polling_interval:
    client: true
    default: 30000
    max: 99000
  flush_timings_secs:
    client: true
    default: 60
  active_user_rate_limit_secs: 60
  verbose_localization:
    default: false
    client: true
  top_topics_formula_log_views_multiplier:
    default: 2
  top_topics_formula_first_post_likes_multiplier:
    default: 0.5
  top_topics_formula_least_likes_per_post_multiplier:
    default: 3
  rebake_old_posts_count:
    default: 80
    min: 1
  migrate_to_new_scheme:
    hidden: true
    default: false
  max_new_topics:
    default: 500
    client: true
    hidden: true
  wizard_enabled:
    default: true
    hidden: true
  bypass_wizard_check:
    default: false
    hidden: true
  logging_provider:
    hidden: true
    default: "default"
    type: "list"
    choices:
      - "default"
      - "lograge"
  bootstrap_error_pages:
    hidden: true
    default: false
  enable_safe_mode:
    default: true
    client: true

embedding:
  embed_by_username:
    default: ""
    type: username
    hidden: true
  embed_post_limit:
    default: 100
    hidden: true
  embed_title_scrubber:
    default: ""
    hidden: true
  embed_blacklist_selector:
    default: ""
    hidden: true
  embed_classname_whitelist:
    default: "emoji"
    hidden: true

legal:
  tos_url:
    client: true
    default: ""
  privacy_policy_url:
    client: true
    default: ""
  faq_url:
    client: true
    default: ""
  log_anonymizer_details:
    default: true

backups:
  enable_backups:
    default: true
    client: true
  readonly_mode_during_backup:
    default: false
  allow_restore:
    default: false
  backup_location:
    default: "local"
    type: enum
    enum: "BackupLocationSiteSetting"
    client: true
  maximum_backups:
    client: true
    default: 5
  automatic_backups_enabled:
    default: true
  backup_frequency:
    min: 1
    max: 30
    default: 7
  s3_backup_bucket:
    default: ""
    regex: '^[a-z0-9\-\/]+$' # can't use '.' when using HTTPS
  s3_disable_cleanup:
    default: false
  backup_time_of_day:
    default: "3:30"
    regex: "^((0?(0|1|2|3|4|5|6|7|8|9)|(10|11|12|13|14|15|16|17|18|19|20|21|22|23))):\\d\\d$"
  backup_with_uploads: true
  backup_gzip_compression_level_for_uploads:
    default: 1
    min: 1
    max: 9
  include_thumbnails_in_backups:
    default: false
  include_s3_uploads_in_backups:
    default: false
    hidden: true

search:
  min_search_term_length:
    client: true
    default: 3
    locale_default:
      zh_CN: 2
      zh_TW: 2
      ko: 2
      ja: 2
  search_tokenize_chinese_japanese_korean: false
  search_prefer_recent_posts: false
  search_recent_posts_size:
    default: 100000
    max: 100000
  log_search_queries:
    client: true
    default: true
  search_query_log_max_size:
    default: 1000000
    max: 1000000
  search_query_log_max_retention_days:
    default: 365 # 1 year
    max: 1825 # 5 years
  search_ignore_accents:
    default: false
    locale_default:
      ar: true
      ca: true
      cs: true
      el: true
      es: true
      fa_IR: true
      fr: true
      hu: true
      pt: true
      pt_BR: true
      ro: true
      sk: true
      tr_TR: true
  category_search_priority_very_low_weight:
    default: 0.6
    hidden: true
    validator: "CategorySearchPriorityWeightsValidator"
  category_search_priority_low_weight:
    default: 0.8
    hidden: true
    validator: "CategorySearchPriorityWeightsValidator"
  category_search_priority_high_weight:
    default: 1.2
    hidden: true
    validator: "CategorySearchPriorityWeightsValidator"
  category_search_priority_very_high_weight:
    default: 1.4
    hidden: true
    validator: "CategorySearchPriorityWeightsValidator"

uncategorized:
  version_checks:
    client: true
    default: true
  new_version_emails: true
  send_welcome_message: true

  suppress_uncategorized_badge:
    client: true
    default: true

  header_dropdown_category_count:
    client: true
    default: 8

  slug_generation_method:
    default: "ascii"
    enum: "SlugSetting"
    client: true
    locale_default:
      ja: "none"
      zh_CN: "none"
      zh_TW: "none"

  permalink_normalizations:
    default: ""
    type: list

  max_similar_results: 5
  minimum_topics_similar: 50

  previous_visit_timeout_hours: 1
  staff_like_weight: 3
  topic_view_duration_hours: 8
  user_profile_view_duration_hours: 8

  # Summary mode
  summary_score_threshold: 15
  summary_posts_required: 50
  summary_likes_required: 1
  summary_percent_filter: 20
  summary_max_results: 100

  automatic_topic_heat_values: true

  # View heat thresholds
  topic_views_heat_low:
    client: true
    default: 1000
  topic_views_heat_medium:
    client: true
    default: 2000
  topic_views_heat_high:
    client: true
    default: 3500

  # Post/Like heat thresholds
  topic_post_like_heat_low:
    client: true
    default: 0.5
  topic_post_like_heat_medium:
    client: true
    default: 1.0
  topic_post_like_heat_high:
    client: true
    default: 2.0

  # History edit heat thresholds
  history_hours_low:
    client: true
    default: 12
  history_hours_medium:
    client: true
    default: 24
  history_hours_high:
    client: true
    default: 48

  # Cold map thresholds
  cold_age_days_low:
    default: 14
    client: true
  cold_age_days_medium:
    default: 90
    client: true
  cold_age_days_high:
    default: 180
    client: true

  # Warnings
  educate_until_posts: 2
  sequential_replies_threshold: 2
  get_a_room_threshold: 3
  dominating_topic_minimum_percent: 20
  disable_avatar_education_message: false

  global_notice:
    default: ""
    client: true
  has_login_hint:
    default: false
    hidden: true

  # Nothing past this threshold is ever considered new
  # this is calculated dynamically every 15 minutes
  min_new_topics_time:
    default: 0
    hidden: true

  # Category IDs
  lounge_category_id:
    default: -1
    hidden: true
  meta_category_id:
    default: -1
    hidden: true
  staff_category_id:
    default: -1
    hidden: true
  uncategorized_category_id:
    default: -1
    hidden: true

  notify_about_flags_after: 48

  show_create_topics_notice:
    client: true
    default: true

  enable_system_avatars:
    hidden: true
    default: true

  disable_system_edit_notifications: true

  notification_consolidation_threshold:
    default: 3
    min: 0

  likes_notification_consolidation_window_mins:
    default: 120
    min: 1

  delete_drafts_older_than_n_days:
    default: 180

  backup_drafts_to_pm_length:
    default: 0
    hidden: true

  tos_topic_id:
    default: -1
    hidden: true
  guidelines_topic_id:
    default: -1
    hidden: true
  privacy_topic_id:
    default: -1
    hidden: true
  welcome_topic_id:
    default: -1
    hidden: true
  lounge_welcome_topic_id:
    default: -1
    hidden: true
  admin_quick_start_topic_id:
    default: -1
    hidden: true

  bootstrap_mode_min_users:
    default: 50
    client: true
    max: 5000

  bootstrap_mode_enabled:
    default: false
    client: true
    hidden: true

  automatically_unpin_topics:
    default: true
    client: true

  read_time_word_count:
    default: 500
    client: true
    locale_default:
      ja: 350
      zh_CN: 350
      zh_TW: 350

  topic_page_title_includes_category:
    default: true
    client: true

  native_app_install_banner_ios: false

  native_app_install_banner_android: false

  ios_app_id:
    default: "1173672076"
    hidden: true

  android_app_id:
    default: "com.discourse"
    hidden: true

  pwa_display_browser_regex:
    default: "iPad|iPhone"
    hidden: true

  app_association_android:
    default: ""
    textarea: true

  app_association_ios:
    default: ""
    textarea: true

  share_anonymized_statistics: true

  auto_handle_queued_age:
    default: 60
    min: 0

  svg_icon_subset:
    default: ""
    type: "list"
    list_type: "compact"
    client: true

  always_include_topic_excerpts:
    default: false
    hidden: true

  max_bulk_invites:
    default: 50000
    hidden: true

  overridden_robots_txt:
    default: ""
    hidden: true

  enable_new_user_card_route:
    default: false
    client: true
    hidden: true

user_preferences:
  default_email_digest_frequency:
    enum: "DigestEmailSiteSetting"
    default: 10080
  default_include_tl0_in_digests: false
  default_email_level:
    enum: "EmailLevelSiteSetting"
    default: 1
  default_email_messages_level:
    enum: "EmailLevelSiteSetting"
    default: 0
  default_email_mailing_list_mode: false
  default_email_mailing_list_mode_frequency:
    enum: "MailingListModeSiteSetting"
    default: 1
  disable_mailing_list_mode:
    default: false
    client: true
  default_email_previous_replies:
    enum: "PreviousRepliesSiteSetting"
    default: 2
  default_email_in_reply_to:
    default: true

  default_other_new_topic_duration_minutes:
    enum: "NewTopicDurationSiteSetting"
    default: 2880
  default_other_auto_track_topics_after_msecs:
    enum: "AutoTrackDurationSiteSetting"
    default: 240000
  default_other_notification_level_when_replying:
    enum: "NotificationLevelWhenReplyingSiteSetting"
    default: 2
  default_other_external_links_in_new_tab: false
  default_other_enable_quoting: true
  default_other_enable_defer: false
  default_other_dynamic_favicon: false
  default_other_like_notification_frequency:
    enum: "LikeNotificationFrequencySiteSetting"
    default: 1

  default_topics_automatic_unpin:
    default: true
    client: true

  default_categories_watching:
    type: category_list
    default: ""
  default_categories_tracking:
    type: category_list
    default: ""
  default_categories_muted:
    type: category_list
    default: ""
  default_categories_watching_first_post:
    type: category_list
    default: ""
  mute_all_categories_by_default:
    default: false
    client: true

  default_tags_watching:
    type: tag_list
    default: ""
  default_tags_tracking:
    type: tag_list
    default: ""
  default_tags_muted:
    type: tag_list
    default: ""
  default_tags_watching_first_post:
    type: tag_list
    default: ""

  default_text_size:
    type: enum
    default: normal
    choices:
      - smaller
      - normal
      - larger
      - largest

  default_title_count_mode:
    type: enum
    default: notifications
    choices:
      - notifications
      - contextual
api:
  retain_web_hook_events_period_days:
    default: 30
  retry_web_hook_events:
    default: false
  api_key_last_used_epoch:
    default: "" # Value is added in a migration
    hidden: true
  revoke_api_keys_days:
    default: 180

user_api:
  allow_user_api_keys:
    default: true
  allow_user_api_key_scopes:
    default: "read|write|message_bus|push|notifications|session_info|one_time_password"
    type: list
  max_api_keys_per_user:
    default: 10
  push_api_secret_key:
    default: ""
    hidden: true
  min_trust_level_for_user_api_key:
    default: 0
    enum: "TrustLevelSetting"
  allowed_user_api_push_urls:
    default: ""
    type: list
  allowed_user_api_auth_redirects:
    default: "https://api.discourse.org/api/auth_redirect|discourse://auth_redirect"
    type: list
  expire_user_api_keys_days:
    default: 180

tags:
  tagging_enabled:
    client: true
    default: false
    refresh: true
  tag_style:
    client: true
    type: enum
    default: "simple"
    choices:
      - simple
      - bullet
      - box
    preview: '<div class="discourse-tags"><span class="discourse-tag {{value}}">tag1</span><span class="discourse-tag {{value}}">tag2</span></div>'
  max_tags_per_topic:
    default: 5
    client: true
  max_tag_length:
    default: 20
    client: true
  min_trust_to_create_tag:
    default: "3"
    enum: "TrustLevelAndStaffSetting"
  min_trust_level_to_tag_topics:
    default: "0"
    enum: "TrustLevelAndStaffSetting"
    client: true
  max_tag_search_results:
    client: true
    default: 5
    min: 1
  show_filter_by_tag:
    client: true
    default: false
    refresh: true
  max_tags_in_filter_list:
    client: true
    default: 30
    min: 1
    refresh: true
  tags_sort_alphabetically:
    client: true
    default: false
    refresh: true
  tags_listed_by_group:
    client: true
    default: false
  allow_staff_to_tag_pms:
    default: false
  suppress_overlapping_tags_in_list:
    default: false
    client: true
  remove_muted_tags_from_latest:
    client: true
    type: enum
    default: always
    enum: RemoveMutedTagsFromLatestSiteSetting
  force_lowercase_tags:
    default: true
    client: true

dashboard:
  dashboard_general_tab_activity_metrics:
    client: true
    type: list
    list_type: compact
    default: "page_view_total_reqs|visits|time_to_first_response|likes|flags|user_to_user_private_messages_with_replies"
    allow_any: false
    choices:
      - page_view_total_reqs
      - visits
      - time_to_first_response
      - likes
      - flags
      - user_to_user_private_messages_with_replies
      - signups
