# Available options:
#
# default   - The default value of the setting.
# 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.
# 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.
# 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.
#
# 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: ''
  contact_email:
    client: true
    default: ''
    type: email
  contact_url:
    client: true
    default: ''
  notification_email:
    default: 'noreply@unconfigured.discourse.org'
    type: email
    shadowed_by_global: true
  site_contact_username:
    default: ''
    type: username
  logo_url:
    client: true
    default: '/images/d-logo-sketch.png'
  logo_small_url:
    client: true
    default: '/images/d-logo-sketch-small.png'
  digest_logo_url:
    client: false
    default: ''
  mobile_logo_url:
    client: true
    default: ''
  favicon_url:
    client: true
    default: '/images/default-favicon.ico'
  apple_touch_icon_url: '/images/default-apple-touch-icon.png'
  exclude_rel_nofollow_domains:
    default: ''
    type: list

basic:
  default_locale:
    default: 'en'
    enum: 'LocaleSiteSetting'
    refresh: true
    shadowed_by_global: true
  allow_user_locale:
    client: true
    default: false
  suggested_topics:
    client: true
    default: 5
    min: 0
  limit_suggested_to_category:
    client: false
    default: false
  default_external_links_in_new_tab: false
  track_external_right_clicks:
    client: true
    default: false
  ga_universal_tracking_code:
    client: true
    default: ''
    regex: "^UA-\\d+-\\d+$"
  ga_universal_domain_name:
    client: true
    default: 'auto'
  ga_tracking_code:
    client: true
    default: ''
  ga_domain_name:
    client: true
    default: ''
  top_menu:
    client: true
    refresh: true
    type: list
    default: "latest|new|unread|top|categories"
    regex: "latest"
    regex_error: "site_settings.errors.must_include_latest"
    choices:
     - latest
     - new
     - unread
     - top
     - categories
     - read
     - posted
     - bookmarks
  post_menu:
    client: true
    type: list
    default: 'like|share|flag|edit|bookmark|delete|admin|reply'
    choices:
     - like
     - edit
     - flag
     - delete
     - share
     - bookmark
     - admin
     - reply
  post_menu_hidden_items:
    client: true
    type: list
    default: 'bookmark|edit|delete|admin'
    choices:
     - like
     - edit
     - flag
     - delete
     - share
     - bookmark
     - admin
     - reply
  share_links:
    client: true
    type: list
    default: 'twitter|facebook|google+|email'
    choices:
     - twitter
     - facebook
     - google+
     - email
  category_colors:
    client: true
    type: list
    default: 'BF1E2E|F1592A|F7941D|9EB83B|3AB54A|12A89D|25AAE2|0E76BD|652D90|92278F|ED207B|8C6238|231F20|808281|B3B5B4|283890'
  category_style:
    client: true
    default: 'bullet'
    enum: 'CategoryStyleSetting'
    preview: '<span class="badge-wrapper {{value}}"><span class="badge-category-parent-bg" style="background-color: #aaa;"></span><span class="badge-category-bg" style="background-color: #777;"></span><span style="color: #fff;" data-drop-close="true" class="badge-category clear-badge">Category</span></span>'
  enable_mobile_theme:
    client: true
    default: true
  relative_date_duration:
    client: true
    default: 30
    min: 0
  topics_per_period_in_top_summary:
    default: 20
    min: 1
  topics_per_period_in_top_page:
    default: 50
    min: 1
  category_featured_topics:
    client: true
    default: 3
    min: 1
  fixed_category_positions:
    client: true
    default: false

  fixed_category_positions_on_create:
    client: true
    default: false

  show_subcategory_list:
    default: false
    client: true
  enable_badges:
    client: true
    default: true

login:
  invite_only:
    client: true
    default: false
  login_required:
    client: true
    default: false
  must_approve_users:
    client: true
    default: false
  enable_local_logins:
    client: true
    default: true
  allow_new_registrations:
    client: true
    default: true
  enable_google_oauth2_logins:
    client: true
    default: false
  google_oauth2_client_id: ''
  google_oauth2_client_secret: ''
  enable_yahoo_logins:
    client: true
    default: false
  enable_twitter_logins:
    client: true
    default: false
  twitter_consumer_key:
    default: ''
    regex: "^[a-zA-Z0-9_+-]+$"
  twitter_consumer_secret:
    default: ''
    regex: "^[a-zA-Z0-9_+-]+$"
  enable_facebook_logins:
    client: true
    default: false
  facebook_app_id:
    default: ''
    regex: "^\\d+$"
  facebook_app_secret:
    default: ''
    regex: "^[a-f0-9]+$"
  enable_github_logins:
    client: true
    default: false
  github_client_id:
    default: ''
    regex: "^[a-f0-9]+$"
  github_client_secret:
    default: ''
    regex: "^[a-f0-9]+$"
  enable_sso:
    client: true
    default: false
  enable_sso_provider: false
  sso_url: ''
  sso_secret: ''
  sso_overrides_email: false
  sso_overrides_username: false
  sso_overrides_name: false
  sso_overrides_avatar:
    default: false
    client: true
  sso_not_approved_url: ''
  email_domains_blacklist:
    default: 'mailinator.com'
    type: list
  email_domains_whitelist:
    default: ''
    type: list
  forgot_password_strict: false
  log_out_strict: true

users:
  min_username_length:
    client: true
    default: 3
    min: 1
  max_username_length:
    client: true
    default: 20
    min: 8
    max: 60
  min_password_length:
    client: true
    default: 8
    min: 1
  block_common_passwords: true
  enforce_global_nicknames:
    default: false
    hidden: true
  discourse_org_access_key:
    default: ''
    hidden: true
  username_change_period: 3
  auto_track_topics_after: 240000
  email_editable: true
  logout_redirect:
    client: true
    default: ''
  full_name_required:
    client: true
    default: false
  enable_names:
    client: true
    default: true
  invite_expiry_days: 30
  invite_passthrough_hours: 0
  invites_per_page:
    client: true
    default: 40
  delete_user_max_post_age:
    client: true
    default: 60
  delete_all_posts_max:
    client: true
    default: 15
  redirect_users_to_top_page: true
  show_email_on_profile:
    client: true
    default: false
  email_token_valid_hours: 24
  email_token_grace_period_hours: 0
  purge_unactivated_users_grace_period_days: 7
  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
    client: true
  anonymous_account_duration_minutes:
    default: 10080

posting:
  min_post_length:
    client: true
    min: 1
    default:
      test: 5
      default: 20
  min_first_post_length:
    client: true
    min: 1
    default:
      test: 5
      default: 20
  min_private_message_post_length:
    client: true
    min: 1
    default:
      test: 5
      default: 10
  max_post_length:
    client: true
    default: 32000
  body_min_entropy: 7
  min_topic_title_length:
    client: true
    default: 15
  max_topic_title_length:
    client: true
    default: 255
  title_min_entropy: 10
  title_prettify: true
  title_fancy_entities: true
  min_private_message_title_length:
    client: true
    default: 2
  allow_uncategorized_topics:
    client: true
    default: true
    refresh: true
  uncategorized_description: "Topics that don't need a category, or don't fit into any other existing category."
  allow_duplicate_topic_titles: false
  min_title_similar_length:
    client: true
    default: 10
  min_body_similar_length:
    client: true
    default: 15
  enable_private_messages: true
  ninja_edit_window: 300
  post_edit_time_limit: 86400
  edit_history_visible_to_public:
    client: true
    default: true
  delete_removed_posts_after:
    client: true
    default: 24
    min: 0
  traditional_markdown_linebreaks:
    client: true
    default: false
  suppress_reply_directly_below:
    client: true
    default: true
  suppress_reply_directly_above:
    client: true
    default: true
  suppress_reply_when_quoting:
    default: true
  max_reply_history:
    default: 1
    client: true
  experimental_reply_expansion:
    default: false
    client: true
  post_undo_action_window_mins: 10
  max_mentions_per_post: 10
  newuser_max_replies_per_topic: 3
  newuser_max_mentions_per_post: 2
  title_max_word_length: 30
  newuser_max_links: 2
  newuser_max_images:
    client: true
    default: 0
  newuser_max_attachments:
    client: true
    default: 0
  uncategorized_category_id:
    default: -1
    hidden: true
  post_excerpt_maxlength: 300
  display_name_on_posts:
    client: true
    default: false
  short_progress_text_threshold:
    client: true
    default: 10000
  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
  delete_old_hidden_posts: true
  censored_words:
    client: true
    default: ''
    refresh: true
    type: list
  enable_emoji:
    default: true
    client: true
  emoji_set:
    default: 'emoji_one'
    client: true
    enum: 'EmojiSetSiteSetting'
  enforce_square_emoji:
    default: true
  approve_post_count:
    default: 0
  approve_unless_trust_level:
    default: 0
    enum: 'TrustLevelSetting'

email:
  email_time_window_mins:
    default: 10
    client: true
  email_posts_context: 5
  digest_min_excerpt_length: 100
  digest_topics: 20
  default_digest_email_frequency:
    default: 7
    enum: 'DigestEmailSiteSetting'
  suppress_digest_email_after_days: 365
  disable_digest_emails:
    default: false
    client: true
  email_custom_headers: 'Auto-Submitted: auto-generated'
  email_subject: '[%{site_name}] %{optional_pm}%{optional_cat}%{topic_title}'
  reply_by_email_enabled: false
  reply_by_email_address:
    default: ''
    validator: "ReplyByEmailAddressValidator"
  pop3_polling_enabled: false
  pop3_polling_ssl: true
  pop3_polling_period_mins: 5
  pop3_polling_host: ''
  pop3_polling_port: 995
  pop3_polling_username: ''
  pop3_polling_password: ''
  email_in:
    default: false
    client: true
  email_in_min_trust:
    default: 2
    enum: 'TrustLevelSetting'
  email_prefix: ''
  email_site_title: ''
  disable_emails:
    default: false
    client: true
  strip_images_from_short_emails: true
  short_email_length: 2800

files:
  max_image_size_kb:
    client: true
    default: 3072
  max_attachment_size_kb:
    client: true
    default: 3072
  authorized_extensions:
    client: true
    default: 'jpg|jpeg|png|gif'
    refresh: true
    type: list
  crawl_images:
    default:
      test: false
      default: true
  max_image_width:
    client: true
    default: 690
  max_image_height:
    client: true
    default: 500
  download_remote_images_to_local:
    default:
      test: false
      default: true
  download_remote_images_threshold: 10
  disabled_image_download_domains:
    type: list
    default: ''
  create_thumbnails: true
  clean_up_uploads: true
  clean_orphan_uploads_grace_period_hours: 1
  purge_deleted_uploads_grace_period_days: 30
  prevent_anons_from_downloading_files:
    default: false
    client: true
  enable_s3_uploads:
    default: false
    client: true
  s3_use_iam_profile: false
  s3_access_key_id: ''
  s3_secret_access_key: ''
  s3_region:
    default: 'us-east-1'
    enum: 'S3RegionSiteSetting'
  s3_upload_bucket:
    default: ''
    regex: '^[^A-Z_.]+$' # can't use '.' when using HTTPS
  s3_cdn_url:
    default: ''
    regex: '^https?:\/\/.+[^\/]$'
  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

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'
  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: 15
  tl2_requires_likes_received: 1
  tl2_requires_likes_given: 1
  tl2_requires_topic_reply_count: 3
  tl3_requires_days_visited:
    default: 50
    min: 0
    max: 100
  tl3_requires_topics_replied_to:
    default: 10
    min: 0
  tl3_requires_topics_viewed:
    default: 25
    min: 0
    max: 100
  tl3_requires_posts_read:
    default: 25
    min: 0
    max: 100
  tl3_requires_topics_viewed_all_time:
    default: 200
    min: 0
  tl3_requires_posts_read_all_time:
    default: 500
    min: 0
  tl3_requires_max_flagged:
    default: 5
    min: 0
  tl3_promotion_min_duration:
    default: 14
    min: 0
  tl3_requires_likes_given:
    default: 30
    min: 0
  tl3_requires_likes_received:
    default: 20
    min: 0
  tl3_links_no_follow:
    default: false
    client: true

security:
  use_https: false
  enable_escaped_fragments: true
  allow_index_in_robots_txt: true
  enable_noscript_support: true
  allow_moderators_to_create_categories: false
  cors_origins:
    default: ''
    type: list

onebox:
  enable_flash_video_onebox: false
  post_onebox_maxlength: 500
  onebox_domains_whitelist:
    default: ''
    type: list

spam:
  add_rel_nofollow_to_user_content: true
  flags_required_to_hide_post: 3
  cooldown_minutes_after_hiding_posts: 10
  num_flags_to_block_new_user: 3
  num_users_to_block_new_user: 3
  notify_mods_when_user_blocked: false
  flag_sockpuppets: true
  newuser_spam_host_threshold: 3
  white_listed_spam_host_domains:
    default: ''
    type: list
  levenshtein_distance_spammer_emails:
      default: 2
      min: 0
      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
  num_flags_to_close_topic: 12
  auto_respond_to_flag_actions: true

rate_limits:
  unique_posts_mins:
    default:
      test: 0
      default: 5
  rate_limit_create_topic: 15
  rate_limit_create_post: 5
  rate_limit_new_user_create_topic: 60
  rate_limit_new_user_create_post: 30
  max_topics_per_day: 20
  max_private_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: 5
  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

developer:
  force_hostname:
    hidden:
      development: false
      default: true
    default: ''
  port:
    hidden:
      development: false
      default: true
    default:
      development: 3000
      default: ''
  queue_jobs:
    hidden:
      development: false
      default: true
    default:
      test: false
      default: true
  enable_long_polling:
    client: true
    default: true
  long_polling_interval: 25000
  long_polling_base_url:
    client: true
    default: '/'
  background_polling_interval:
    client: true
    default: 60000
  polling_interval:
    client: true
    default: 3000
  anon_polling_interval:
    client: true
    default: 15000
  flush_timings_secs:
    client: true
    default: 10
  active_user_rate_limit_secs: 60
  verbose_localization:
    default: false
    client: true
  migrate_to_new_scheme:
    hidden: true
    default: false

embedding:
  embeddable_hosts:
    default: ''
    type: host_list
  feed_polling_enabled: false
  feed_polling_url: ''
  embed_by_username:
    default: ''
    type: username
  embed_username_key_from_feed: ''
  embed_category: ''
  embed_post_limit: 100
  embed_truncate: false
  embed_whitelist_selector: ''
  embed_blacklist_selector: ''

legal:
  tos_url:
    client: true
    default: ''
  privacy_policy_url:
    client: true
    default: ''
  faq_url:
    client: true
    default: ''

backups:
  allow_restore:
    client: false
    default: false
  maximum_backups:
    client: true
    default: 7
  backup_daily:
    client: false
    default: false
  enable_s3_backups:
    client: false
    default: false
  s3_backup_bucket:
    client: false
    default: ''
    regex: "^[^A-Z_.]+$" # can't use '.' when using HTTPS

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

  suppress_uncategorized_badge:
    client: true
    default: true

  slug_generation_method:
    default: 'ascii'
    enum: 'SlugSetting'

  # Search
  min_search_term_length:
    client: true
    default: 3
  max_similar_results: 7
  minimum_topics_similar: 50

  new_topic_duration_minutes: 2880
  previous_visit_timeout_hours: 1
  staff_like_weight: 3
  topic_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

  # 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: 5000

  # 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:
    client: true
    default: 14
  cold_age_days_medium:
    client: true
    default: 90
  cold_age_days_high:
    client: true
    default: 180

  # Warnings
  educate_until_posts: 2
  sequential_replies_threshold: 2
  dominating_topic_minimum_percent: 20

  global_notice:
    default: ""
    client: true
  has_login_hint:
    default: false
    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

  notify_about_flags_after: 48

  enable_cdn_js_debugging: false

  show_create_topics_notice:
    client: true
    default: true

  enable_system_avatars:
    hidden: true
    default: true

  disable_edit_notifications: false

  vacuum_db_days: 90
  last_vacuum:
    default: 0
    hidden: true

  delete_drafts_older_than_n_days: 180

  tos_topic_id:
    default: -1
    hidden: true
  guidelines_topic_id:
    default: -1
    hidden: true
  privacy_topic_id:
    default: -1
    hidden: true
