func gitlabApplicationSettingsSchema()

in internal/provider/sdk/schema_gitlab_application_settings.go [25:2261]


func gitlabApplicationSettingsSchema() map[string]*schema.Schema {
	return map[string]*schema.Schema{
		"admin_mode": {
			Description: "Require administrators to enable Admin Mode by re-authenticating for administrative tasks.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"abuse_notification_email": {
			Description: "If set, abuse reports are sent to this address. Abuse reports are always available in the Admin Area.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"after_sign_out_path": {
			Description: "Where to redirect users after logout.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"after_sign_up_text": {
			Description: "Text shown to the user after signing up.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"akismet_api_key": {
			Description: "API key for Akismet spam protection.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"akismet_enabled": {
			Description: "(If enabled, requires: akismet_api_key) Enable or disable Akismet spam protection.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_account_deletion": {
			Description: "Set to true to allow users to delete their accounts. Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_group_owners_to_manage_ldap": {
			Description: "Set to true to allow group owners to manage LDAP.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_local_requests_from_system_hooks": {
			Description: "Allow requests to the local network from system hooks.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_local_requests_from_web_hooks_and_services": {
			Description: "Allow requests to the local network from web hooks and services.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_project_creation_for_guest_and_below": {
			Description: "Indicates whether users assigned up to the Guest role can create groups and personal projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"allow_runner_registration_token": {
			Description: "Allow using a registration token to create a runner.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"archive_builds_in_human_readable": {
			Description: "Set the duration for which the jobs are considered as old and expired. After that time passes, the jobs are archived and no longer able to be retried. Make it empty to never expire jobs. It has to be no less than 1 day, for example: 15 days, 1 month, 2 years.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"asciidoc_max_includes": {
			Description: "Maximum limit of AsciiDoc include directives being processed in any one document. Maximum: 64.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"asset_proxy_enabled": {
			Description: "(If enabled, requires: asset_proxy_url) Enable proxying of assets. GitLab restart is required to apply changes.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"asset_proxy_secret_key": {
			Description: "Shared secret with the asset proxy server. GitLab restart is required to apply changes.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"asset_proxy_url": {
			Description: "URL of the asset proxy server. GitLab restart is required to apply changes.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"asset_proxy_allowlist": {
			Description: "Assets that match these domains are not proxied. Wildcards allowed. Your GitLab installation URL is automatically allowlisted. GitLab restart is required to apply changes.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"authorized_keys_enabled": {
			Description: "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.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"auto_ban_user_on_excessive_projects_download": {
			Description: "When enabled, users will get automatically banned from the application when they download more than the maximum number of unique projects in the time period specified by max_number_of_repository_downloads and max_number_of_repository_downloads_within_time_period respectively. Self-managed, Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"auto_devops_domain": {
			Description: "Specify a domain to use by default for every project’s Auto Review Apps and Auto Deploy stages.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"auto_devops_enabled": {
			Description: "Enable Auto DevOps for projects by default. It automatically builds, tests, and deploys applications based on a predefined CI/CD configuration.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"automatic_purchased_storage_allocation": {
			Description: "Enabling this permits automatic allocation of purchased storage in a namespace.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"bulk_import_concurrent_pipeline_batch_limit": {
			Description: "Maximum simultaneous Direct Transfer batches to process.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"bulk_import_enabled": {
			Description: "Enable migrating GitLab groups by direct transfer.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"bulk_import_max_download_file_size": {
			Description: "Maximum download file size when importing from source GitLab instances by direct transfer.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"can_create_group": {
			Description: "Indicates whether users can create top-level groups.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"check_namespace_plan": {
			Description: "Enabling this makes only licensed EE features available to projects if the project namespace’s plan includes the feature or if the project is public.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"ci_max_includes": {
			Description: "The maximum number of includes per pipeline.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"ci_max_total_yaml_size_bytes": {
			Description: "The maximum amount of memory, in bytes, that can be allocated for the pipeline configuration, with all included YAML configuration files.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"commit_email_hostname": {
			Description: "Custom hostname (for private commit emails).",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"concurrent_bitbucket_import_jobs_limit": {
			Description: "Maximum number of simultaneous import jobs for the Bitbucket Cloud importer.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"concurrent_bitbucket_server_import_jobs_limit": {
			Description: "Maximum number of simultaneous import jobs for the Bitbucket Server importer.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"concurrent_github_import_jobs_limit": {
			Description: "Maximum number of simultaneous import jobs for the GitHub importer.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"container_expiration_policies_enable_historic_entries": {
			Description: "Enable cleanup policies for all projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"container_registry_cleanup_tags_service_max_list_size": {
			Description: "The maximum number of tags that can be deleted in a single execution of cleanup policies.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"container_registry_delete_tags_service_timeout": {
			Description: "The maximum time, in seconds, that the cleanup process can take to delete a batch of tags for cleanup policies.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"container_registry_expiration_policies_caching": {
			Description: "Caching during the execution of cleanup policies.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"container_registry_expiration_policies_worker_capacity": {
			Description: "Number of workers for cleanup policies.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"container_registry_token_expire_delay": {
			Description: "Container Registry token duration in minutes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"package_registry_cleanup_policies_worker_capacity": {
			Description: "Number of workers assigned to the packages cleanup policies.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"deactivate_dormant_users": {
			Description: "Enable automatic deactivation of dormant users.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"deactivate_dormant_users_period": {
			Description: "Length of time (in days) after which a user is considered dormant.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"decompress_archive_file_timeout": {
			Description: "Default timeout for decompressing archived files, in seconds. Set to 0 to disable timeouts.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"default_artifacts_expire_in": {
			Description: "Set the default expiration time for each job’s artifacts.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_branch_name": {
			Description: "Instance-level custom initial branch name",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_branch_protection": {
			Description: "Determine if developers can push to the default branch. Can take: 0 (not protected, both users with the Developer role or Maintainer role can push new commits and force push), 1 (partially protected, users with the Developer role or Maintainer role can push new commits, but cannot force push) or 2 (fully protected, users with the Developer or Maintainer role cannot push new commits, but users with the Developer or Maintainer role can; no one can force push) as a parameter. Default is 2.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"default_branch_protection_defaults": {
			Description: "The default_branch_protection_defaults attribute describes the default branch protection defaults. All parameters are optional.",
			Type:        schema.TypeList,
			MaxItems:    1,
			Elem: &schema.Resource{
				Schema: map[string]*schema.Schema{
					"allow_force_push": {
						Description: "Allow force push for all users with push access.",
						Type:        schema.TypeBool,
						Optional:    true,
						Computed:    true,
					},
					"allowed_to_merge": {
						Description: "An array of access levels allowed to merge. Supports Developer (30) or Maintainer (40).",
						Type:        schema.TypeList,
						Elem:        &schema.Schema{Type: schema.TypeInt},
						Optional:    true,
						Computed:    true,
					},
					"allowed_to_push": {
						Description: "An array of access levels allowed to push. Supports Developer (30) or Maintainer (40).",
						Type:        schema.TypeList,
						Elem:        &schema.Schema{Type: schema.TypeInt},
						Optional:    true,
						Computed:    true,
					},
					"developer_can_initial_push": {
						Description: "Allow developers to initial push.",
						Type:        schema.TypeBool,
						Optional:    true,
						Computed:    true,
					},
				},
			},
			Optional: true,
			Computed: true,
		},

		"default_ci_config_path": {
			Description: "Default CI/CD configuration file and path for new projects (.gitlab-ci.yml if not set).",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_group_visibility": {
			Description: "What visibility level new groups receive. Can take private, internal and public as a parameter.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_preferred_language": {
			Description: "Default preferred language for users who are not logged in.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_project_creation": {
			Description: "Default project creation protection. Can take: 0 (No one), 1 (Maintainers) or 2 (Developers + Maintainers).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"default_project_visibility": {
			Description: "What visibility level new projects receive. Can take private, internal and public as a parameter.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"default_projects_limit": {
			Description: "Project limit per user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"default_snippet_visibility": {
			Description: "What visibility level new snippets receive. Can take private, internal and public as a parameter.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"delete_inactive_projects": {
			Description: "Enable inactive project deletion feature.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"default_syntax_highlighting_theme": {
			Description: "Default syntax highlighting theme for users who are new or not signed in. See IDs of available themes (https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/themes.rb#L16)",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"delete_unconfirmed_users": {
			Description: "Specifies whether users who have not confirmed their email should be deleted. When set to true, unconfirmed users are deleted after unconfirmed_users_delete_after_days days. Self-managed, Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"deletion_adjourned_period": {
			Description: "The number of days to wait before deleting a project or group that is marked for deletion. Value must be between 1 and 90.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"diagramsnet_enabled": {
			Description:  "(If enabled, requires diagramsnet_url) Enable Diagrams.net integration.",
			Type:         schema.TypeBool,
			Optional:     true,
			Computed:     true,
			RequiredWith: []string{"diagramsnet_url"},
		},

		"diagramsnet_url": {
			Description:  "The Diagrams.net instance URL for integration.",
			Type:         schema.TypeString,
			Optional:     true,
			Computed:     true,
			RequiredWith: []string{"diagramsnet_enabled"},
		},

		"diff_max_patch_bytes": {
			Description: "Maximum diff patch size, in bytes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"diff_max_files": {
			Description: "Maximum files in a diff.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"diff_max_lines": {
			Description: "Maximum lines in a diff.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"disable_admin_oauth_scopes": {
			Description: "Stops administrators from connecting their GitLab accounts to non-trusted OAuth 2.0 applications that have the api, read_api, read_repository, write_repository, read_registry, write_registry, or sudo scopes.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"disable_feed_token": {
			Description: "Disable display of RSS/Atom and calendar feed tokens.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"disable_personal_access_tokens": {
			Description: "Disable personal access tokens. Self-managed, Premium and Ultimate only. There is no method available to enable a personal access token that’s been disabled through the API. This is a known issue.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"disabled_oauth_sign_in_sources": {
			Description: "Disabled OAuth sign-in sources.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"dns_rebinding_protection_enabled": {
			Description: "Enforce DNS rebinding attack protection.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"domain_denylist_enabled": {
			Description: "(If enabled, requires: domain_denylist) Allows blocking sign-ups from emails from specific domains.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"domain_denylist": {
			Description: "Users with email addresses that match these domains cannot sign up. Wildcards allowed. Use separate lines for multiple entries. Ex: domain.com, *.domain.com.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"domain_allowlist": {
			Description: "Force people to use only corporate emails for sign-up. Null means there is no restriction.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"downstream_pipeline_trigger_limit_per_project_user_sha": {
			Description: "Maximum downstream pipeline trigger rate.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"dsa_key_restriction": {
			Description: "The minimum allowed bit length of an uploaded DSA key. 0 means no restriction. -1 disables DSA keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"duo_features_enabled": {
			Description: "Indicates whether GitLab Duo features are enabled for this instance. Self-managed, Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"ecdsa_key_restriction": {
			Description: "The minimum allowed curve size (in bits) of an uploaded ECDSA key. 0 means no restriction. -1 disables ECDSA keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"ecdsa_sk_key_restriction": {
			Description: "The minimum allowed curve size (in bits) of an uploaded ECDSA_SK key. 0 means no restriction. -1 disables ECDSA_SK keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"ed25519_key_restriction": {
			Description: "The minimum allowed curve size (in bits) of an uploaded ED25519 key. 0 means no restriction. -1 disables ED25519 keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"ed25519_sk_key_restriction": {
			Description: "The minimum allowed curve size (in bits) of an uploaded ED25519_SK key. 0 means no restriction. -1 disables ED25519_SK keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"eks_access_key_id": {
			Description: "AWS IAM access key ID.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"eks_account_id": {
			Description: "Amazon account ID.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"eks_integration_enabled": {
			Description: "Enable integration with Amazon EKS.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"eks_secret_access_key": {
			Description: "AWS IAM secret access key.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_aws_access_key": {
			Description: "AWS IAM access key.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_aws_region": {
			Description: "The AWS region the Elasticsearch domain is configured.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_aws_secret_access_key": {
			Description: "AWS IAM secret access key.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_aws": {
			Description: "Enable the use of AWS hosted Elasticsearch.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_indexed_field_length_limit": {
			Description: "Maximum size of text fields to index by Elasticsearch. 0 value means no limit. This does not apply to repository and wiki indexing.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_indexed_file_size_limit_kb": {
			Description: "Maximum size of repository and wiki files that are indexed by Elasticsearch.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_indexing": {
			Description: "Enable Elasticsearch indexing.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_limit_indexing": {
			Description: "Limit Elasticsearch to index certain namespaces and projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_max_bulk_concurrency": {
			Description: "Maximum concurrency of Elasticsearch bulk requests per indexing operation. This only applies to repository indexing operations.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_max_bulk_size_mb": {
			Description: "Maximum size of Elasticsearch bulk indexing requests in MB. This only applies to repository indexing operations.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_max_code_indexing_concurrency": {
			Description: "Maximum concurrency of Elasticsearch code indexing background jobs. This only applies to repository indexing operations. Premium and Ultimate only.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_namespace_ids": {
			Description: "The namespaces to index via Elasticsearch if elasticsearch_limit_indexing is enabled.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeInt},
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_requeue_workers": {
			Description: "Enable automatic requeuing of indexing workers. This improves non-code indexing throughput by enqueuing Sidekiq jobs until all documents are processed. Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_project_ids": {
			Description: "The projects to index via Elasticsearch if elasticsearch_limit_indexing is enabled.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeInt},
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_search": {
			Description: "Enable Elasticsearch search.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_worker_number_of_shards": {
			Description: "Number of indexing worker shards. This improves non-code indexing throughput by enqueuing more parallel Sidekiq jobs. Premium and Ultimate only.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_url": {
			Description: "The URL to use for connecting to Elasticsearch. Use a comma-separated list to support cluster (for example, http://localhost:9200, http://localhost:9201).",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_username": {
			Description: "The username of your Elasticsearch instance.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"elasticsearch_password": {
			Description: "The password of your Elasticsearch instance.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"email_additional_text": {
			Description: "Additional text added to the bottom of every email for legal/auditing/compliance reasons.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"email_author_in_body": {
			Description: "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.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"email_confirmation_setting": {
			Description: "Specifies whether users must confirm their email before sign in. Possible values are off, soft, and hard.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"enable_artifact_external_redirect_warning_page": {
			Description: "Show the external redirect page that warns you about user-generated content in GitLab Pages.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"enabled_git_access_protocol": {
			Description: "Enabled protocols for Git access. Allowed values are: ssh, http, and nil to allow both protocols.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
			DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
				// if "nil" is passed in, it will set the value to "" in the backend.
				if strings.ToLower(new) == "nil" {
					new = ""
				}
				return old == new
			},
		},

		"enforce_namespace_storage_limit": {
			Description: "Enabling this permits enforcement of namespace storage limits.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"enforce_terms": {
			Description: "(If enabled, requires: terms) Enforce application ToS to all users.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"external_auth_client_cert": {
			Description: "(If enabled, requires: external_auth_client_key) The certificate to use to authenticate with the external authorization service.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"external_auth_client_key_pass": {
			Description: "Passphrase to use for the private key when authenticating with the external service this is encrypted when stored.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"external_auth_client_key": {
			Description: "Private key for the certificate when authentication is required for the external authorization service, this is encrypted when stored.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"external_authorization_service_default_label": {
			Description: "The default classification label to use when requesting authorization and no classification label has been specified on the project.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"external_authorization_service_enabled": {
			Description: "(If enabled, requires: external_authorization_service_default_label, external_authorization_service_timeout and external_authorization_service_url) Enable using an external authorization service for accessing projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"external_authorization_service_timeout": {
			Description: "The timeout after which an authorization request is aborted, in seconds. When a request times out, access is denied to the user. (min: 0.001, max: 10, step: 0.001).",
			Type:        schema.TypeFloat,
			Optional:    true,
			Computed:    true,
		},

		"external_authorization_service_url": {
			Description: "URL to which authorization requests are directed.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"external_pipeline_validation_service_url": {
			Description: "URL to use for pipeline validation requests.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"external_pipeline_validation_service_token": {
			Description: "Optional. Token to include as the X-Gitlab-Token header in requests to the URL in external_pipeline_validation_service_url.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"external_pipeline_validation_service_timeout": {
			Description: "How long to wait for a response from the pipeline validation service. Assumes OK if it times out.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"failed_login_attempts_unlock_period_in_minutes": {
			Description: "Time period in minutes after which the user is unlocked when maximum number of failed sign-in attempts reached.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"file_template_project_id": {
			Description: "The ID of a project to load custom file templates from.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"first_day_of_week": {
			Description: "Start day of the week for calendar views and date pickers. Valid values are 0 for Sunday, 1 for Monday, and 6 for Saturday.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"geo_node_allowed_ips": {
			Description: "Comma-separated list of IPs and CIDRs of allowed secondary nodes. For example, 1.1.1.1, 2.2.2.0/24.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"geo_status_timeout": {
			Description: "The amount of seconds after which a request to get a secondary node status times out.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"git_rate_limit_users_alertlist": {
			Description: "List of user IDs that are emailed when the Git abuse rate limit is exceeded. Maximum: 100 user IDs. Self-managed, Ultimate only.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeInt},
			Optional:    true,
			Computed:    true,
		},

		"git_rate_limit_users_allowlist": {
			Description: "List of usernames excluded from Git anti-abuse rate limits. Maximum: 100 usernames. Self-managed, Ultimate only.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"git_two_factor_session_expiry": {
			Description: "Maximum duration (in minutes) of a session for Git operations when 2FA is enabled.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"gitaly_timeout_default": {
			Description: "Default Gitaly timeout, in seconds. This timeout is not enforced for Git fetch/push operations or Sidekiq jobs. Set to 0 to disable timeouts.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"gitaly_timeout_fast": {
			Description: "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.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"gitaly_timeout_medium": {
			Description: "Medium Gitaly timeout, in seconds. This should be a value between the Fast and the Default timeout. Set to 0 to disable timeouts.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"gitlab_dedicated_instance": {
			Description: "Indicates whether the instance was provisioned for GitLab Dedicated.",
			Type:        schema.TypeBool,
			Computed:    true,
		},

		"gitlab_environment_toolkit_instance": {
			Description: "Indicates whether the instance was provisioned with the GitLab Environment Toolkit for Service Ping reporting.",
			Type:        schema.TypeBool,
			Computed:    true,
		},

		"gitlab_shell_operation_limit": {
			Description: "Maximum number of Git operations per minute a user can perform.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"gitpod_enabled": {
			Description: "Enable Gitpod integration.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"gitpod_url": {
			Description: "The Gitpod instance URL for integration.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"globally_allowed_ips": {
			Description: "Comma-separated list of IP addresses and CIDRs always allowed for inbound traffic. For example, 1.1.1.1, 2.2.2.0/24.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"grafana_enabled": {
			Description: "Enable Grafana.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"grafana_url": {
			Description: "Grafana URL.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"gravatar_enabled": {
			Description: "Enable Gravatar.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"group_owners_can_manage_default_branch_protection": {
			Description: "Prevent overrides of default branch protection.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"help_page_hide_commercial_content": {
			Description: "Hide marketing-related entries from help.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"help_page_support_url": {
			Description: "Alternate support URL for help page and help dropdown.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"help_page_text": {
			Description: "Custom text displayed on the help page.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"help_text": {
			Description: "GitLab server administrator information.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"hide_third_party_offers": {
			Description: "Do not display offers from third parties in GitLab.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"home_page_url": {
			Description: "Redirect to this URL when not logged in.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"housekeeping_enabled": {
			Description: "Enable or disable Git housekeeping. If enabled, requires housekeeping_optimize_repository_period.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"housekeeping_optimize_repository_period": {
			Description: "Number of Git pushes after which an incremental git-repack is run.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"html_emails_enabled": {
			Description: "Enable HTML emails.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"import_sources": {
			Description: fmt.Sprintf("Sources to allow project import from. Valid values are: %s", utils.RenderValueListForDocs(allowedImportSources)),
			Type:        schema.TypeList,
			Elem: &schema.Schema{
				Type:         schema.TypeString,
				ValidateFunc: validation.StringInSlice(allowedImportSources, false),
			},
			Optional: true,
			Computed: true,
		},

		"in_product_marketing_emails_enabled": {
			Description: "Enable in-product marketing emails.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"inactive_projects_delete_after_months": {
			Description: "If delete_inactive_projects is true, the time (in months) to wait before deleting inactive projects.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"inactive_projects_min_size_mb": {
			Description: "If delete_inactive_projects is true, the minimum repository size for projects to be checked for inactivity.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"inactive_projects_send_warning_email_after_months": {
			Description: "If delete_inactive_projects is true, sets the time (in months) to wait before emailing maintainers that the project is scheduled be deleted because it is inactive.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"include_optional_metrics_in_service_ping": {
			Description: "Whether or not optional metrics are enabled in Service Ping.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"invisible_captcha_enabled": {
			Description: "Enable Invisible CAPTCHA spam detection during sign-up.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"issues_create_limit": {
			Description: "Max number of issue creation requests per minute per user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"jira_connect_application_key": {
			Description: "ID of the OAuth application used to authenticate with the GitLab for Jira Cloud app.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"jira_connect_proxy_url": {
			Description: "URL of the GitLab instance used as a proxy for the GitLab for Jira Cloud app.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"jira_connect_public_key_storage_enabled": {
			Description: "Enable public key storage for the GitLab for Jira Cloud app.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"keep_latest_artifact": {
			Description: "Prevent the deletion of the artifacts from the most recent successful jobs, regardless of the expiry time.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"local_markdown_version": {
			Description: "Increase this value when any cached Markdown should be invalidated.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"lock_memberships_to_ldap": {
			Description: "Set to true to lock all memberships to LDAP. Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"lock_duo_features_enabled": {
			Description: "Indicates whether the GitLab Duo features enabled setting is enforced for all subgroups. Self-managed, Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"mailgun_signing_key": {
			Description: "The Mailgun HTTP webhook signing key for receiving events from webhook.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"mailgun_events_enabled": {
			Description: "Enable Mailgun event receiver.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"maintenance_mode_message": {
			Description: "Message displayed when instance is in maintenance mode.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"maintenance_mode": {
			Description: "When instance is in maintenance mode, non-administrative users can sign in with read-only access and make read-only API requests.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"maven_package_requests_forwarding": {
			Description: "Use repo.maven.apache.org as a default remote repository when the package is not found in the GitLab Package Registry for Maven. Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"max_artifacts_size": {
			Description: "Maximum artifacts size in MB.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_attachment_size": {
			Description: "Limit attachment size in MB.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_decompressed_archive_size": {
			Description: "Maximum decompressed archive size in bytes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_export_size": {
			Description: "Maximum export size in MB. 0 for unlimited.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_import_remote_file_size": {
			Description: "Maximum remote file size for imports from external object storages.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_import_size": {
			Description: "Maximum import size in MB. 0 for unlimited.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_login_attempts": {
			Description: "Maximum number of sign-in attempts before locking out the user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_pages_size": {
			Description: "Maximum size of pages repositories in MB.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_personal_access_token_lifetime": {
			Description: "Maximum allowable lifetime for access tokens in days.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_ssh_key_lifetime": {
			Description: "Maximum allowable lifetime for SSH keys in days.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_terraform_state_size_bytes": {
			Description: "Maximum size in bytes of the Terraform state files. Set this to 0 for unlimited file size.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"metrics_method_call_threshold": {
			Description: "A method call is only tracked when it takes longer than the given amount of milliseconds.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_number_of_repository_downloads": {
			Description: "Maximum number of unique repositories a user can download in the specified time period before they are banned. Maximum: 10,000 repositories.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"max_number_of_repository_downloads_within_time_period": {
			Description: "Reporting time period (in seconds). Maximum: 864000 seconds (10 days).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"mirror_available": {
			Description: "Allow repository mirroring to configured by project Maintainers. If disabled, only Administrators can configure repository mirroring.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"mirror_capacity_threshold": {
			Description: "Minimum capacity to be available before scheduling more mirrors preemptively.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"mirror_max_capacity": {
			Description: "Maximum number of mirrors that can be synchronizing at the same time.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"mirror_max_delay": {
			Description: "Maximum time (in minutes) between updates that a mirror can have when scheduled to synchronize.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"npm_package_requests_forwarding": {
			Description: "Use npmjs.org as a default remote repository when the package is not found in the GitLab Package Registry for npm.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"nuget_skip_metadata_url_validation": {
			Description: "Indicates whether to skip metadata URL validation for the NuGet package.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"outbound_local_requests_whitelist": {
			Description: "Define a list of trusted domains or IP addresses to which local requests are allowed when local requests for hooks and services are disabled.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"package_metadata_purl_types": {
			Description: "List of package registry metadata to sync. See the list of the available values (https://gitlab.com/gitlab-org/gitlab/-/blob/ace16c20d5da7c4928dd03fb139692638b557fe3/app/models/concerns/enums/package_metadata.rb#L5). Self-managed, Ultimate only.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeInt},
			Optional:    true,
			Computed:    true,
		},

		"package_registry_allow_anyone_to_pull_option": {
			Description: "Enable to allow anyone to pull from Package Registry visible and changeable.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"pages_domain_verification_enabled": {
			Description: "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.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"password_authentication_enabled_for_git": {
			Description: "Enable authentication for Git over HTTP(S) via a GitLab account password.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"password_authentication_enabled_for_web": {
			Description: "Enable authentication for the web interface via a GitLab account password.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"minimum_password_length": {
			Description: "Indicates whether passwords require a minimum length. Premium and Ultimate only.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"password_number_required": {
			Description: "Indicates whether passwords require at least one number.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"password_symbol_required": {
			Description: "Indicates whether passwords require at least one symbol character.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"password_uppercase_required": {
			Description: "Indicates whether passwords require at least one uppercase letter.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"password_lowercase_required": {
			Description: "Indicates whether passwords require at least one lowercase letter.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"performance_bar_allowed_group_path": {
			Description: "Path of the group that is allowed to toggle the performance bar.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"personal_access_token_prefix": {
			Description: "Prefix for all generated personal access tokens.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"pipeline_limit_per_project_user_sha": {
			Description: "Maximum number of pipeline creation requests per minute per user and commit.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"plantuml_enabled": {
			Description: "(If enabled, requires: plantuml_url) Enable PlantUML integration.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"plantuml_url": {
			Description: "The PlantUML instance URL for integration.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"polling_interval_multiplier": {
			Description: "Interval multiplier used by endpoints that perform polling. Set to 0 to disable polling.",
			Type:        schema.TypeFloat,
			Optional:    true,
			Computed:    true,
		},

		"project_export_enabled": {
			Description: "Enable project export.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"project_jobs_api_rate_limit": {
			Description: "Maximum authenticated requests to /project/:id/jobs per minute.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"projects_api_rate_limit_unauthenticated": {
			Description: "Max number of requests per 10 minutes per IP address for unauthenticated requests to the list all projects API. To disable throttling set to 0.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"prometheus_metrics_enabled": {
			Description: "Enable Prometheus metrics.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"protected_ci_variables": {
			Description: "CI/CD variables are protected by default.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"push_event_activities_limit": {
			Description: "Number of changes (branches or tags) in a single push to determine whether individual push events or bulk push events are created. Bulk push events are created if it surpasses that value.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"push_event_hooks_limit": {
			Description: "Number of changes (branches or tags) in a single push to determine whether webhooks and services fire or not. Webhooks and services aren’t submitted if it surpasses that value.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"pypi_package_requests_forwarding": {
			Description: "Use pypi.org as a default remote repository when the package is not found in the GitLab Package Registry for PyPI.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"rate_limiting_response_text": {
			Description: "When rate limiting is enabled via the throttle_* settings, send this plain text response when a rate limit is exceeded. ‘Retry later’ is sent if this is blank.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"raw_blob_request_limit": {
			Description: "Max number of requests per minute for each raw path. To disable throttling set to 0.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"receptive_cluster_agents_enabled": {
			Description: "Enable receptive mode for GitLab Agents for Kubernetes.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"remember_me_enabled": {
			Description: "Enable Remember me setting.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"require_admin_two_factor_authentication": {
			Description: "Allow administrators to require 2FA for all administrators on the instance.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"require_personal_access_token_expiry": {
			Description: "When enabled, users must set an expiration date when creating a group or project access token, or a personal access token owned by a non-service account.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"search_rate_limit": {
			Description: "Max number of requests per minute for performing a search while authenticated. To disable throttling set to 0.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"search_rate_limit_unauthenticated": {
			Description: "Max number of requests per minute for performing a search while unauthenticated. To disable throttling set to 0.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"recaptcha_enabled": {
			Description: "(If enabled, requires: recaptcha_private_key and recaptcha_site_key) Enable reCAPTCHA.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"recaptcha_private_key": {
			Description: "Private key for reCAPTCHA.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"recaptcha_site_key": {
			Description: "Site key for reCAPTCHA.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"receive_max_input_size": {
			Description: "Maximum push size (MB).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"repository_checks_enabled": {
			Description: "GitLab periodically runs git fsck in all project and wiki repositories to look for silent disk corruption issues.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"repository_size_limit": {
			Description: "Size limit per repository (MB).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"repository_storages_weighted": {
			Description: "Hash of names taken from gitlab.yml to weights. New projects are created in one of these stores, chosen by a weighted random selection.",
			Type:        schema.TypeMap,
			Elem:        &schema.Schema{Type: schema.TypeInt},
			Optional:    true,
			Computed:    true,
		},

		"require_admin_approval_after_user_signup": {
			Description: "When enabled, any user that signs up for an account using the registration form is placed under a Pending approval state and has to be explicitly approved by an administrator.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"require_two_factor_authentication": {
			Description: "(If enabled, requires: two_factor_grace_period) Require all users to set up Two-factor authentication.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"restricted_visibility_levels": {
			Description: "Selected levels cannot be used by non-Administrator users for groups, projects or snippets. Can take private, internal and public as a parameter. Null means there is no restriction.",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"rsa_key_restriction": {
			Description: "The minimum allowed bit length of an uploaded RSA key. 0 means no restriction. -1 disables RSA keys.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"security_approval_policies_limit": {
			Description: "Maximum number of active merge request approval policies per security policy project. Maximum: 20",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"security_policy_global_group_approvers_enabled": {
			Description: "Whether to look up merge request approval policy approval groups globally or within project hierarchies.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"security_txt_content": {
			Description: "Public security contact information.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"send_user_confirmation_email": {
			Description: "Send confirmation email on sign-up.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"service_access_tokens_expiration_enforced": {
			Description: "Flag to indicate if token expiry date can be optional for service account users",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"session_expire_delay": {
			Description: "Session duration in minutes. GitLab restart is required to apply changes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"shared_runners_enabled": {
			Description: "(If enabled, requires: shared_runners_text and shared_runners_minutes) Enable shared runners for new projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"shared_runners_minutes": {
			Description: "Set the maximum number of CI/CD minutes that a group can use on shared runners per month.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"shared_runners_text": {
			Description: "Shared runners text.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"sidekiq_job_limiter_mode": {
			Description: "track or compress. Sets the behavior for Sidekiq job size limits.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"sidekiq_job_limiter_compression_threshold_bytes": {
			Description: "The threshold in bytes at which Sidekiq jobs are compressed before being stored in Redis.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"sidekiq_job_limiter_limit_bytes": {
			Description: "The threshold in bytes at which Sidekiq jobs are rejected. 0 means do not reject any job.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"sign_in_text": {
			Description: "Text on the login page.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"signup_enabled": {
			Description: "Enable registration.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"silent_admin_exports_enabled": {
			Description: "Enable Silent admin exports.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"silent_mode_enabled": {
			Description: "Enable Silent mode.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"slack_app_enabled": {
			Description: "(If enabled, requires: slack_app_id, slack_app_secret and slack_app_secret) Enable Slack app.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"slack_app_id": {
			Description: "The app ID of the Slack-app.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"slack_app_secret": {
			Description: "The app secret of the Slack-app.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"slack_app_signing_secret": {
			Description: "The signing secret of the Slack-app.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"slack_app_verification_token": {
			Description: "The verification token of the Slack-app.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"snippet_size_limit": {
			Description: "Max snippet content size in bytes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"snowplow_app_id": {
			Description: "The Snowplow site name / application ID. (for example, gitlab)",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"snowplow_collector_hostname": {
			Description: "The Snowplow collector hostname. (for example, snowplow.trx.gitlab.net)",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"snowplow_cookie_domain": {
			Description: "The Snowplow cookie domain. (for example, .gitlab.com)",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"snowplow_database_collector_hostname": {
			Description: "The Snowplow collector for database events hostname. (for example, db-snowplow.trx.gitlab.net)",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"snowplow_enabled": {
			Description: "Enable snowplow tracking.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"sourcegraph_enabled": {
			Description: "Enables Sourcegraph integration. If enabled, requires sourcegraph_url.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"sourcegraph_public_only": {
			Description: "Blocks Sourcegraph from being loaded on private and internal projects.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"sourcegraph_url": {
			Description: "The Sourcegraph instance URL for integration.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"spam_check_endpoint_enabled": {
			Description: "Enables spam checking using external Spam Check API endpoint.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"spam_check_endpoint_url": {
			Description: "URL of the external Spamcheck service endpoint. Valid URI schemes are grpc or tls. Specifying tls forces communication to be encrypted.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"spam_check_api_key": {
			Description: "API key used by GitLab for accessing the Spam Check service endpoint.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
			Computed:    true,
		},

		"static_objects_external_storage_auth_token": {
			Description: "Authentication token for the external storage linked in static_objects_external_storage_url.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
		},

		"static_objects_external_storage_url": {
			Description: "URL to an external storage for repository static objects.",
			Type:        schema.TypeString,
			Sensitive:   true,
			Optional:    true,
		},

		"suggest_pipeline_enabled": {
			Description: "Enable pipeline suggestion banner.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"terminal_max_session_time": {
			Description: "Maximum time for web terminal websocket connection (in seconds). Set to 0 for unlimited time.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"terms": {
			Description: "(Required by: enforce_terms) Markdown content for the ToS.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_api_enabled": {
			Description: "(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 (for example, from crawlers or abusive bots).",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_api_period_in_seconds": {
			Description: "Rate limit period (in seconds).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_api_requests_per_period": {
			Description: "Maximum requests per period per user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_packages_api_enabled": {
			Description: "(If enabled, requires: throttle_authenticated_packages_api_period_in_seconds and throttle_authenticated_packages_api_requests_per_period) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). View Package Registry rate limits for more details.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_packages_api_period_in_seconds": {
			Description: "Rate limit period (in seconds). View Package Registry rate limits for more details.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_packages_api_requests_per_period": {
			Description: "Maximum requests per period per user. View Package Registry rate limits for more details.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_web_enabled": {
			Description: "(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 (for example, from crawlers or abusive bots).",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_web_period_in_seconds": {
			Description: "Rate limit period (in seconds).",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_authenticated_web_requests_per_period": {
			Description: "Maximum requests per period per user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_api_enabled": {
			Description: "(If enabled, requires: throttle_unauthenticated_api_period_in_seconds and throttle_unauthenticated_api_requests_per_period) Enable unauthenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots).",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_api_period_in_seconds": {
			Description: "Rate limit period in seconds.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_api_requests_per_period": {
			Description: "Max requests per period per IP.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_packages_api_enabled": {
			Description: "(If enabled, requires: throttle_unauthenticated_packages_api_period_in_seconds and throttle_unauthenticated_packages_api_requests_per_period) Enable authenticated API request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots). View Package Registry rate limits for more details.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_packages_api_period_in_seconds": {
			Description: "Rate limit period (in seconds). View Package Registry rate limits for more details.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_packages_api_requests_per_period": {
			Description: "Maximum requests per period per user. View Package Registry rate limits for more details.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_web_enabled": {
			Description: "(If enabled, requires: throttle_unauthenticated_web_period_in_seconds and throttle_unauthenticated_web_requests_per_period) Enable unauthenticated web request rate limit. Helps reduce request volume (for example, from crawlers or abusive bots).",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_web_period_in_seconds": {
			Description: "Rate limit period in seconds.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"throttle_unauthenticated_web_requests_per_period": {
			Description: "Max requests per period per IP.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"time_tracking_limit_to_hours": {
			Description: "Limit display of time tracking units to hours.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"two_factor_grace_period": {
			Description: "Amount of time (in hours) that users are allowed to skip forced configuration of two-factor authentication.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"unconfirmed_users_delete_after_days": {
			Description: "Specifies how many days after sign-up to delete users who have not confirmed their email. Only applicable if delete_unconfirmed_users is set to true. Must be 1 or greater. Self-managed, Premium and Ultimate only.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"unique_ips_limit_enabled": {
			Description: "(If enabled, requires: unique_ips_limit_per_user and unique_ips_limit_time_window) Limit sign in from multiple IPs.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"unique_ips_limit_per_user": {
			Description: "Maximum number of IPs per user.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"unique_ips_limit_time_window": {
			Description: "How many seconds an IP is counted towards the limit.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},

		"update_runner_versions_enabled": {
			Description: "Fetch GitLab Runner release version data from GitLab.com.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"usage_ping_enabled": {
			Description: "Every week GitLab reports license usage back to GitLab, Inc.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"use_clickhouse_for_analytics": {
			Description: "Enables ClickHouse as a data source for analytics reports. ClickHouse must be configured for this setting to take effect. Available on Premium and Ultimate only.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"user_deactivation_emails_enabled": {
			Description: "Send an email to users upon account deactivation.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"user_default_external": {
			Description: "Newly registered users are external by default.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"user_default_internal_regex": {
			Description: "Specify an email address regex pattern to identify default internal users.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"user_defaults_to_private_profile": {
			Description: "Newly created users have private profile by default.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"user_oauth_applications": {
			Description: "Allow users to register any application to use GitLab as an OAuth provider.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"user_show_add_ssh_key_message": {
			Description: "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.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"valid_runner_registrars": {
			Description: "List of types which are allowed to register a GitLab Runner. Can be [], ['group'], ['project'] or ['group', 'project'].",
			Type:        schema.TypeList,
			Elem:        &schema.Schema{Type: schema.TypeString},
			Optional:    true,
			Computed:    true,
		},

		"version_check_enabled": {
			Description: "Let GitLab inform you when an update is available.",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"whats_new_variant": {
			Description: "What's new variant, possible values: all_tiers, current_tier, and disabled.",
			Type:        schema.TypeString,
			Optional:    true,
			Computed:    true,
		},

		"web_ide_clientside_preview_enabled": {
			Description: "Live Preview (allow live previews of JavaScript projects in the Web IDE using CodeSandbox Live Preview).",
			Type:        schema.TypeBool,
			Optional:    true,
			Computed:    true,
		},

		"wiki_page_max_content_bytes": {
			Description: "Maximum wiki page content size in bytes. The minimum value is 1024 bytes.",
			Type:        schema.TypeInt,
			Optional:    true,
			Computed:    true,
		},
	}
}