Application settings API

These API calls allow you to read and modify GitLab instance application settings as appear in /admin/application_settings. You have to be an administrator in order to perform this action.

Get current application settings

List the current application settings of the GitLab instance.

GET /application/settings
curl --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/application/settings

Example response:

{
   "default_projects_limit" : 100000,
   "signup_enabled" : true,
   "id" : 1,
   "default_branch_protection" : 2,
   "restricted_visibility_levels" : [],
   "password_authentication_enabled_for_web" : true,
   "after_sign_out_path" : null,
   "max_attachment_size" : 10,
   "user_oauth_applications" : true,
   "updated_at" : "2016-01-04T15:44:55.176Z",
   "session_expire_delay" : 10080,
   "home_page_url" : null,
   "default_snippet_visibility" : "private",
   "domain_whitelist" : [],
   "domain_blacklist_enabled" : false,
   "domain_blacklist" : [],
   "created_at" : "2016-01-04T15:44:55.176Z",
   "default_project_visibility" : "private",
   "default_group_visibility" : "private",
   "gravatar_enabled" : true,
   "sign_in_text" : null,
   "container_registry_token_expire_delay": 5,
   "repository_storages": ["default"],
   "plantuml_enabled": false,
   "plantuml_url": null,
   "terminal_max_session_time": 0,
   "polling_interval_multiplier": 1.0,
   "rsa_key_restriction": 0,
   "dsa_key_restriction": 0,
   "ecdsa_key_restriction": 0,
   "ed25519_key_restriction": 0,
   "enforce_terms": true,
   "terms": "Hello world!",
   "performance_bar_allowed_group_id": 42,
   "instance_statistics_visibility_private": false,
   "user_show_add_ssh_key_message": true
}

Change application settings

Use an API call to modify GitLab instance application settings.

PUT /application/settings
curl --request PUT --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" https://gitlab.example.com/api/v4/application/settings?signup_enabled=false&default_project_visibility=internal

Example response:

{
  "id": 1,
  "default_projects_limit": 100000,
  "signup_enabled": false,
  "password_authentication_enabled_for_web": true,
  "gravatar_enabled": true,
  "sign_in_text": "",
  "created_at": "2015-06-12T15:51:55.432Z",
  "updated_at": "2015-06-30T13:22:42.210Z",
  "home_page_url": "",
  "default_branch_protection": 2,
  "restricted_visibility_levels": [],
  "max_attachment_size": 10,
  "session_expire_delay": 10080,
  "default_project_visibility": "internal",
  "default_snippet_visibility": "private",
  "default_group_visibility": "private",
  "domain_whitelist": [],
  "domain_blacklist_enabled" : false,
  "domain_blacklist" : [],
  "user_oauth_applications": true,
  "after_sign_out_path": "",
  "container_registry_token_expire_delay": 5,
  "repository_storages": ["default"],
  "plantuml_enabled": false,
  "plantuml_url": null,
  "terminal_max_session_time": 0,
  "polling_interval_multiplier": 1.0,
  "rsa_key_restriction": 0,
  "dsa_key_restriction": 0,
  "ecdsa_key_restriction": 0,
  "ed25519_key_restriction": 0,
  "enforce_terms": true,
  "terms": "Hello world!",
  "performance_bar_allowed_group_id": 42,
  "instance_statistics_visibility_private": false,
  "user_show_add_ssh_key_message": true
}

List of settings that can be accessed via API calls

In general, all settings are optional. Certain settings though, if enabled, will require other settings to be set in order to function properly. These requirements are listed in the descriptions of the relevant settings.

Attribute Type Required Description
admin_notification_email string no Abuse reports will be sent to this address if it is set. Abuse reports are always available in the admin area.
after_sign_out_path string no Where to redirect users after logout.
after_sign_up_text string no Text shown to the user after signing up
akismet_api_key string required by: akismet_enabled API key for akismet spam protection.
akismet_enabled boolean no (If enabled, requires: akismet_api_key) Enable or disable akismet spam protection.
allow_local_requests_from_hooks_and_services boolean no Allow requests to the local network from hooks and services.
authorized_keys_enabled boolean no By default, we write to the authorized_keys file to support Git over SSH without additional configuration. GitLab can be optimized to authenticate SSH keys via the database file. Only disable this if you have configured your OpenSSH server to use the AuthorizedKeysCommand.
auto_devops_domain string no Specify a domain to use by default for every project's Auto Review Apps and Auto Deploy stages.
auto_devops_enabled boolean no Enable Auto DevOps for projects by default. It will automatically build, test, and deploy applications based on a predefined CI/CD configuration.
clientside_sentry_dsn string required by: clientside_sentry_enabled Clientside Sentry Data Source Name.
clientside_sentry_enabled boolean no (If enabled, requires: clientside_sentry_dsn) Enable Sentry error reporting for the client side.
container_registry_token_expire_delay integer no Container Registry token duration in minutes.
default_artifacts_expire_in string no Set the default expiration time for each job's artifacts.
default_branch_protection integer no Determine if developers can push to master. Can take: 0 (not protected, both developers and maintainers can push new commits, force push, or delete the branch), 1 (partially protected, developers and maintainers can push new commits, but cannot force push or delete the branch) or 2 (fully protected, developers cannot push new commits, but maintainers can; no-one can force push or delete the branch) as a parameter. Default is 2.
default_group_visibility string no What visibility level new groups receive. Can take private, internal and public as a parameter. Default is private.
default_project_visibility string no What visibility level new projects receive. Can take private, internal and public as a parameter. Default is private.
default_projects_limit integer no Project limit per user. Default is 100000.
default_snippet_visibility string no What visibility level new snippets receive. Can take private, internal and public as a parameter. Default is private.
disabled_oauth_sign_in_sources array of strings no Disabled OAuth sign-in sources.
domain_blacklist array of strings required by: domain_blacklist_enabled Users with e-mail addresses that match these domain(s) will NOT be able to sign-up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com.
domain_blacklist_enabled boolean no (If enabled, requires: domain_blacklist) Allows blocking sign-ups from emails from specific domains.
domain_whitelist array of strings no Force people to use only corporate emails for sign-up. Default is null, meaning there is no restriction.
dsa_key_restriction integer no The minimum allowed bit length of an uploaded DSA key. Default is 0 (no restriction). -1 disables DSA keys.
ecdsa_key_restriction integer no The minimum allowed curve size (in bits) of an uploaded ECDSA key. Default is 0 (no restriction). -1 disables ECDSA keys.
ed25519_key_restriction integer no The minimum allowed curve size (in bits) of an uploaded ED25519 key. Default is 0 (no restriction). -1 disables ED25519 keys.
email_author_in_body boolean no Some email servers do not support overriding the email sender name. Enable this option to include the name of the author of the issue, merge request or comment in the email body instead.
enabled_git_access_protocol string no Enabled protocols for Git access. Allowed values are: ssh, http, and nil to allow both protocols.
enforce_terms boolean no (If enabled, requires: terms) Enforce application ToS to all users.
gitaly_timeout_default integer no Default Gitaly timeout, in seconds. This timeout is not enforced for git fetch/push operations or Sidekiq jobs. Set to 0 to disable timeouts.
gitaly_timeout_fast integer no Gitaly fast operation timeout, in seconds. Some Gitaly operations are expected to be fast. If they exceed this threshold, there may be a problem with a storage shard and 'failing fast' can help maintain the stability of the GitLab instance. Set to 0 to disable timeouts.
gitaly_timeout_medium integer no Medium Gitaly timeout, in seconds. This should be a value between the Fast and the Default timeout. Set to 0 to disable timeouts.
gravatar_enabled boolean no Enable Gravatar.
hashed_storage_enabled boolean no Create new projects using hashed storage paths: Enable immutable, hash-based paths and repository names to store repositories on disk. This prevents repositories from having to be moved or renamed when the Project URL changes and may improve disk I/O performance. (EXPERIMENTAL)
help_page_hide_commercial_content boolean no Hide marketing-related entries from help.
help_page_support_url string no Alternate support URL for help page.
help_page_text string no Custom text displayed on the help page.
hide_third_party_offers boolean no Do not display offers from third parties within GitLab.
home_page_url string no Redirect to this URL when not logged in.
housekeeping_bitmaps_enabled boolean required by: housekeeping_enabled Enable Git pack file bitmap creation.
housekeeping_enabled boolean no (If enabled, requires: housekeeping_bitmaps_enabled, housekeeping_full_repack_period, housekeeping_gc_period, and housekeeping_incremental_repack_period) Enable or disable git housekeeping.
housekeeping_full_repack_period integer required by: housekeeping_enabled Number of Git pushes after which an incremental git repack is run.
housekeeping_gc_period integer required by: housekeeping_enabled Number of Git pushes after which git gc is run.
housekeeping_incremental_repack_period integer required by: housekeeping_enabled Number of Git pushes after which an incremental git repack is run.
html_emails_enabled boolean no Enable HTML emails.
instance_statistics_visibility_private boolean no When set to true Instance statistics will only be available to admins.
import_sources array of strings no Sources to allow project import from, possible values: github, bitbucket, gitlab, google_code, fogbugz, git, and gitlab_project.
max_artifacts_size integer no Maximum artifacts size in MB
max_attachment_size integer no Limit attachment size in MB
max_pages_size integer no Maximum size of pages repositories in MB
metrics_enabled boolean no (If enabled, requires: metrics_host, metrics_method_call_threshold, metrics_packet_size, metrics_pool_size, metrics_port, metrics_sample_interval and metrics_timeout) Enable influxDB metrics.
metrics_host string required by: metrics_enabled InfluxDB host.
metrics_method_call_threshold integer required by: metrics_enabled A method call is only tracked when it takes longer than the given amount of milliseconds.
metrics_packet_size integer required by: metrics_enabled The amount of datapoints to send in a single UDP packet.
metrics_pool_size integer required by: metrics_enabled The amount of InfluxDB connections to keep open.
metrics_port integer required by: metrics_enabled The UDP port to use for connecting to InfluxDB.
metrics_sample_interval integer required by: metrics_enabled The sampling interval in seconds.
metrics_timeout integer required by: metrics_enabled The amount of seconds after which InfluxDB will time out.
mirror_available boolean no Allow mirrors to be set up for projects. If disabled, only admins will be able to set up mirrors in projects.
pages_domain_verification_enabled boolean no Require users to prove ownership of custom domains. Domain verification is an essential security measure for public GitLab sites. Users are required to demonstrate they control a domain before it is enabled.
password_authentication_enabled_for_git boolean no Enable authentication for Git over HTTP(S) via a GitLab account password. Default is true.
password_authentication_enabled_for_web boolean no Enable authentication for the web interface via a GitLab account password. Default is true.
performance_bar_allowed_group_id string no (Deprecated: Use performance_bar_allowed_group_path instead) Path of the group that is allowed to toggle the performance bar.
performance_bar_allowed_group_path string no Path of the group that is allowed to toggle the performance bar.
performance_bar_enabled boolean no (Deprecated: Pass performance_bar_allowed_group_path: nil instead) Allow enabling the performance bar.
plantuml_enabled boolean no (If enabled, requires: plantuml_url) Enable PlantUML integration. Default is false.
plantuml_url string required by: plantuml_enabled The PlantUML instance URL for integration.
polling_interval_multiplier decimal no Interval multiplier used by endpoints that perform polling. Set to 0 to disable polling.
project_export_enabled boolean no Enable project export.
prometheus_metrics_enabled boolean no Enable prometheus metrics.
recaptcha_enabled boolean no (If enabled, requires: recaptcha_private_key and recaptcha_site_key) Enable recaptcha.
recaptcha_private_key string required by: recaptcha_enabled Private key for recaptcha.
recaptcha_site_key string required by: recaptcha_enabled Site key for recaptcha.
repository_checks_enabled boolean no GitLab will periodically run git fsck in all project and wiki repositories to look for silent disk corruption issues.
repository_storages array of strings no A list of names of enabled storage paths, taken from gitlab.yml. New projects will be created in one of these stores, chosen at random.
require_two_factor_authentication boolean no (If enabled, requires: two_factor_grace_period) Require all users to set up Two-factor authentication.
restricted_visibility_levels array of strings no Selected levels cannot be used by non-admin users for groups, projects or snippets. Can take private, internal and public as a parameter. Default is null which means there is no restriction.
rsa_key_restriction integer no The minimum allowed bit length of an uploaded RSA key. Default is 0 (no restriction). -1 disables RSA keys.
send_user_confirmation_email boolean no Send confirmation email on sign-up.
sentry_dsn string required by: sentry_enabled Sentry Data Source Name.
sentry_enabled boolean no (If enabled, requires: sentry_dsn) Sentry is an error reporting and logging tool which is currently not shipped with GitLab, available at https://getsentry.com.
session_expire_delay integer no Session duration in minutes. GitLab restart is required to apply changes
shared_runners_enabled boolean no (If enabled, requires: shared_runners_text) Enable shared runners for new projects.
shared_runners_text string required by: shared_runners_enabled Shared runners text.
sign_in_text string no Text on the login page.
signin_enabled string no (Deprecated: Use password_authentication_enabled_for_web instead) Flag indicating if password authentication is enabled for the web interface.
signup_enabled boolean no Enable registration. Default is true.
terminal_max_session_time integer no Maximum time for web terminal websocket connection (in seconds). Set to 0 for unlimited time.
terms text required by: enforce_terms (Required by: enforce_terms) Markdown content for the ToS.
throttle_authenticated_api_enabled boolean no (If enabled, requires: throttle_authenticated_api_period_in_seconds and throttle_authenticated_api_requests_per_period) Enable authenticated API request rate limit. Helps reduce request volume (e.g. from crawlers or abusive bots).
throttle_authenticated_api_period_in_seconds integer required by: throttle_authenticated_api_enabled Rate limit period in seconds.
throttle_authenticated_api_requests_per_period integer required by: throttle_authenticated_api_enabled Max requests per period per user.
throttle_authenticated_web_enabled boolean no (If enabled, requires: throttle_authenticated_web_period_in_seconds and throttle_authenticated_web_requests_per_period) Enable authenticated web request rate limit. Helps reduce request volume (e.g. from crawlers or abusive bots).
throttle_authenticated_web_period_in_seconds integer required by: throttle_authenticated_web_enabled Rate limit period in seconds.
throttle_authenticated_web_requests_per_period integer required by: throttle_authenticated_web_enabled Max requests per period per user.
throttle_unauthenticated_enabled boolean no (If enabled, requires: throttle_unauthenticated_period_in_seconds and throttle_unauthenticated_requests_per_period) Enable unauthenticated request rate limit. Helps reduce request volume (e.g. from crawlers or abusive bots).
throttle_unauthenticated_period_in_seconds integer required by: throttle_unauthenticated_enabled Rate limit period in seconds.
throttle_unauthenticated_requests_per_period integer required by: throttle_unauthenticated_enabled Max requests per period per IP.
two_factor_grace_period integer required by: require_two_factor_authentication Amount of time (in hours) that users are allowed to skip forced configuration of two-factor authentication.
unique_ips_limit_enabled boolean no (If enabled, requires: unique_ips_limit_per_user and unique_ips_limit_time_window) Limit sign in from multiple ips.
unique_ips_limit_per_user integer required by: unique_ips_limit_enabled Maximum number of ips per user.
unique_ips_limit_time_window integer required by: unique_ips_limit_enabled How many seconds an IP will be counted towards the limit.
usage_ping_enabled boolean no Every week GitLab will report license usage back to GitLab, Inc.
user_default_external boolean no Newly registered users will be external by default.
user_oauth_applications boolean no Allow users to register any application to use GitLab as an OAuth provider.
user_show_add_ssh_key_message boolean no When set to false disable the "You won't be able to pull or push project code via SSH" warning shown to users with no uploaded SSH key.
version_check_enabled boolean no Let GitLab inform you when an update is available.