{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gitlab/json-schema/gitlab-put-api-v4-projects-id-request-schema.json",
  "title": "putApiV4ProjectsIdRequest",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gitlab-rest-api-openapi.yml#/components/schemas/putApiV4ProjectsIdRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the project"
    },
    "default_branch": {
      "type": [
        "string",
        "null"
      ],
      "description": "The default branch of the project"
    },
    "path": {
      "type": [
        "string",
        "null"
      ],
      "description": "The path of the repository"
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "The description of the project"
    },
    "build_git_strategy": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "fetch",
        "clone"
      ],
      "description": "The Git strategy. Defaults to `fetch`"
    },
    "build_timeout": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Build timeout"
    },
    "auto_cancel_pending_pipelines": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "enabled"
      ],
      "description": "Auto-cancel pending pipelines"
    },
    "ci_config_path": {
      "type": [
        "string",
        "null"
      ],
      "description": "The path to CI config file. Defaults to `.gitlab-ci.yml`"
    },
    "service_desk_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Disable or enable the service desk"
    },
    "issues_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if the issue tracker is enabled"
    },
    "merge_requests_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if merge requests are enabled"
    },
    "wiki_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if the wiki is enabled"
    },
    "jobs_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if jobs are enabled"
    },
    "snippets_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if snippets are enabled"
    },
    "issues_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Issues access level. One of `disabled`, `private` or `enabled`"
    },
    "repository_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Repository access level. One of `disabled`, `private` or `enabled`"
    },
    "merge_requests_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Merge requests access level. One of `disabled`, `private` or `enabled`"
    },
    "forking_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Forks access level. One of `disabled`, `private` or `enabled`"
    },
    "wiki_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Wiki access level. One of `disabled`, `private` or `enabled`"
    },
    "builds_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Builds access level. One of `disabled`, `private` or `enabled`"
    },
    "snippets_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Snippets access level. One of `disabled`, `private` or `enabled`"
    },
    "package_registry_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled",
        "public"
      ],
      "description": "Controls visibility of the package registry. One of `disabled`, `private`, `enabled` or `public`. `private` will make the package registry accessible only to project members (reporter role and above). `enabled` will make the package registry accessible to everyone who has access to the project. `public` will make the package registry accessible to everyone. `disabled` will disable the package registry"
    },
    "pages_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled",
        "public"
      ],
      "description": "Pages access level. One of `disabled`, `private`, `enabled` or `public`"
    },
    "analytics_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Analytics access level. One of `disabled`, `private` or `enabled`"
    },
    "container_registry_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Controls visibility of the container registry. One of `disabled`, `private` or `enabled`. `private` will make the container registry accessible only to project members (reporter role and above). `enabled` will make the container registry accessible to everyone who has access to the project. `disabled` will disable the container registry"
    },
    "security_and_compliance_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Security and compliance access level. One of `disabled`, `private` or `enabled`"
    },
    "releases_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Releases access level. One of `disabled`, `private` or `enabled`"
    },
    "environments_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Environments access level. One of `disabled`, `private` or `enabled`"
    },
    "feature_flags_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Feature flags access level. One of `disabled`, `private` or `enabled`"
    },
    "infrastructure_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Infrastructure access level. One of `disabled`, `private` or `enabled`"
    },
    "monitor_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Monitor access level. One of `disabled`, `private` or `enabled`"
    },
    "model_experiments_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Model experiments access level. One of `disabled`, `private` or `enabled`"
    },
    "model_registry_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Model registry access level. One of `disabled`, `private` or `enabled`"
    },
    "emails_disabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Deprecated: Use emails_enabled instead."
    },
    "emails_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable email notifications"
    },
    "show_default_award_emojis": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Show default award emojis"
    },
    "show_diff_preview_in_email": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Include the code diff preview in merge request notification emails"
    },
    "warn_about_potentially_unwanted_characters": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Warn about potentially unwanted characters"
    },
    "enforce_auth_checks_on_uploads": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enforce auth check on uploads"
    },
    "shared_runners_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if shared runners are enabled for that project"
    },
    "group_runners_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if group runners are enabled for that project"
    },
    "resource_group_default_process_mode": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "unordered",
        "oldest_first",
        "newest_first",
        "newest_ready_first"
      ],
      "description": "The process mode of the resource group"
    },
    "resolve_outdated_diff_discussions": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Automatically resolve merge request diff threads on lines changed with a push"
    },
    "remove_source_branch_after_merge": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Remove the source branch by default after merge"
    },
    "packages_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Deprecated: Use :package_registry_access_level instead. Enable project packages feature"
    },
    "container_registry_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Deprecated: Use :container_registry_access_level instead. Flag indication if the container registry is enabled for that project"
    },
    "container_expiration_policy_attributes": {
      "type": [
        "object",
        "null"
      ],
      "description": "Object that contains information on the container expiration policy",
      "properties": {
        "cadence": {
          "type": [
            "string",
            "null"
          ],
          "description": "Container expiration policy cadence for recurring job"
        },
        "keep_n": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Container expiration policy number of images to keep"
        },
        "older_than": {
          "type": [
            "string",
            "null"
          ],
          "description": "Container expiration policy remove images older than value"
        },
        "name_regex": {
          "type": [
            "string",
            "null"
          ],
          "description": "Container expiration policy regex for image removal"
        },
        "name_regex_keep": {
          "type": [
            "string",
            "null"
          ],
          "description": "Container expiration policy regex for image retention"
        },
        "enabled": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Flag indication if container expiration policy is enabled"
        }
      }
    },
    "lfs_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if Git LFS is enabled for that project"
    },
    "visibility": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "private",
        "internal",
        "public"
      ],
      "description": "The visibility of the project."
    },
    "public_builds": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Deprecated: Use public_jobs instead."
    },
    "public_jobs": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Perform public builds"
    },
    "request_access_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow users to request member access"
    },
    "only_allow_merge_if_pipeline_succeeds": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Only allow to merge if builds succeed"
    },
    "allow_merge_on_skipped_pipeline": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow to merge if pipeline is skipped"
    },
    "only_allow_merge_if_all_discussions_are_resolved": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Only allow to merge if all threads are resolved"
    },
    "tag_list": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Deprecated: Use :topics instead"
    },
    "topics": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "The list of topics for a project"
    },
    "avatar": {
      "type": [
        "string",
        "null"
      ],
      "format": "binary",
      "description": "Avatar image for project"
    },
    "printing_merge_request_link_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Show link to create/view merge request when pushing from the command line"
    },
    "merge_method": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "ff",
        "rebase_merge",
        "merge"
      ],
      "description": "The merge method used when merging merge requests"
    },
    "suggestion_commit_message": {
      "type": [
        "string",
        "null"
      ],
      "description": "The commit message used to apply merge request suggestions"
    },
    "merge_commit_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Template used to create merge commit message"
    },
    "squash_commit_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Template used to create squash commit message"
    },
    "issue_branch_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Template used to create a branch from an issue"
    },
    "auto_devops_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if Auto DevOps is enabled"
    },
    "auto_devops_deploy_strategy": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "continuous",
        "manual",
        "timed_incremental"
      ],
      "description": "Auto Deploy strategy"
    },
    "autoclose_referenced_issues": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Flag indication if referenced issues auto-closing is enabled"
    },
    "repository_storage": {
      "type": [
        "string",
        "null"
      ],
      "description": "Which storage shard the repository is on. Available only to admins"
    },
    "squash_option": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "never",
        "always",
        "default_on",
        "default_off"
      ],
      "description": "Squash default for project. One of `never`, `always`, `default_on`, or `default_off`."
    },
    "mr_default_target_self": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Merge requests of this forked project targets itself by default"
    },
    "mr_default_title_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Template used to generate the default merge request title. Maximum 100 characters.",
      "maxLength": 100
    },
    "cicd_catalog_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Set whether the project is a CI/CD catalog project"
    },
    "only_allow_merge_if_all_status_checks_passed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Blocks merge requests from merging unless all status checks have passed"
    },
    "approvals_before_merge": {
      "type": [
        "integer",
        "null"
      ],
      "description": "How many approvers should approve merge request by default"
    },
    "mirror": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "[Deprecated] Enables pull mirroring in a project"
    },
    "mirror_trigger_builds": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "[Deprecated] Pull mirroring triggers builds"
    },
    "external_authorization_classification_label": {
      "type": [
        "string",
        "null"
      ],
      "description": "The classification label for the project"
    },
    "requirements_access_level": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "private",
        "enabled"
      ],
      "description": "Requirements feature access level. One of `disabled`, `private` or `enabled`"
    },
    "prevent_merge_without_jira_issue": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Require an associated issue from Jira"
    },
    "auto_duo_code_review_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable automatic reviews by GitLab Duo on merge requests"
    },
    "duo_code_review_decisions_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable approval and change requests by GitLab Duo on merge requests"
    },
    "duo_remote_flows_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable GitLab Duo remote flows for this project"
    },
    "duo_sast_fp_detection_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable GitLab Duo SAST false positive detection for this project"
    },
    "duo_secret_detection_fp_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable GitLab Duo Secret Detection false positive detection for this project"
    },
    "duo_dependency_bump_breaking_changes_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable Agentic Breaking Change Resolution for this project"
    },
    "duo_sast_vr_workflow_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable GitLab Duo SAST vulnerability resolution workflow for this project"
    },
    "spp_repository_pipeline_access": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Grant read-only access to security policy configurations for enforcement in linked CI/CD projects"
    },
    "merge_request_title_regex": {
      "type": [
        "string",
        "null"
      ],
      "description": "The regex the Merge Request must adhere to"
    },
    "merge_request_title_regex_description": {
      "type": [
        "string",
        "null"
      ],
      "description": "The description for the regex the Merge Request must adhere to"
    },
    "ci_default_git_depth": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Default number of revisions for shallow cloning"
    },
    "keep_latest_artifact": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Indicates if the latest artifact should be kept for this project."
    },
    "ci_forward_deployment_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Prevent older deployment jobs that are still pending"
    },
    "ci_forward_deployment_rollback_allowed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow job retries for rollback deployments"
    },
    "ci_allow_fork_pipelines_to_run_in_parent_project": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow fork merge request pipelines to run in parent project"
    },
    "ci_separated_caches": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable or disable separated caches based on branch protection."
    },
    "restrict_user_defined_variables": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Restrict use of user-defined variables when triggering a pipeline"
    },
    "ci_pipeline_variables_minimum_override_role": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "no_one_allowed",
        "developer",
        "maintainer",
        "owner"
      ],
      "description": "Limit ability to override CI/CD variables when triggering a pipeline to only users with at least the set minimum role"
    },
    "ci_push_repository_for_job_token_allowed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow pushing to this project's repository by authenticating with a CI/CD job token generated in this project."
    },
    "ci_id_token_sub_claim_components": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Claims that will be used to build the sub claim in id tokens"
    },
    "ci_delete_pipelines_in_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Pipelines older than the configured time are deleted"
    },
    "max_artifacts_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Set the maximum file size for each job's artifacts"
    },
    "protect_merge_request_pipelines": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Make protected CI/CD variables and runners available in merge request pipelines"
    },
    "ci_display_pipeline_variables": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Display all manually-defined variables in the pipeline details page after running a pipeline manually"
    },
    "ci_skip_branch_pipelines_for_mrs": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Skip the branch pipeline when a branch has an open merge request, and run only the merge request pipeline"
    },
    "automatic_rebase_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable automatic rebase of the source branch before merge"
    },
    "feature_flags_minimum_role": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "no_one_allowed",
        "developer",
        "maintainer",
        "owner"
      ],
      "description": "Limit the ability to create, update, toggle, and delete feature flags to only users with at least the set minimum role"
    },
    "allow_pipeline_trigger_approve_deployment": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow pipeline triggerer to approve deployments"
    },
    "mirror_user_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "[Deprecated] User responsible for all the activity surrounding a pull mirror event. Can only be set by admins"
    },
    "only_mirror_protected_branches": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "[Deprecated] Only mirror protected branches. Mutually exclusive with `mirror_branch_regex`."
    },
    "mirror_branch_regex": {
      "type": [
        "string",
        "null"
      ],
      "description": "[Deprecated] Only mirror branches match regex. Mutually exclusive with `only_mirror_protected_branches`."
    },
    "mirror_overwrites_diverged_branches": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "[Deprecated] Pull mirror overwrites diverged branches"
    },
    "import_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "URL from which the project is imported"
    },
    "fallback_approvals_required": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Overall approvals required when no rule is present"
    },
    "issues_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Default description for Issues. Description is parsed with GitLab Flavored Markdown."
    },
    "merge_requests_template": {
      "type": [
        "string",
        "null"
      ],
      "description": "Default description for merge requests. Description is parsed with GitLab Flavored Markdown."
    },
    "merge_pipelines_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable merged results pipelines."
    },
    "merge_trains_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable merge trains."
    },
    "merge_trains_skip_train_allowed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Allow merge train merge requests to be merged without waiting for pipelines to finish."
    },
    "merge_train_enforcement": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "allow_bypass",
        "enforce_for_all_users",
        "enforce_with_owner_override"
      ],
      "description": "Merge train enforcement level. One of `allow_bypass`, `enforce_for_all_users`, or `enforce_with_owner_override`."
    },
    "max_pipelines_per_merge_train": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Maximum number of parallel pipelines per merge train for this project."
    },
    "ci_restrict_pipeline_cancellation_role": {
      "type": [
        "string",
        "null"
      ],
      "description": "Roles allowed to cancel pipelines and jobs."
    },
    "web_based_commit_signing_enabled": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Enable web based commit signing for this project"
    },
    "security_policy_pipeline_must_succeed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "Require all security policy pipelines to succeed before merge requests can be merged"
    },
    "reviewer_assignment_strategy": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "disabled",
        "code_owners"
      ],
      "description": "Strategy used to automatically assign reviewers to merge requests. One of `disabled` or `code_owners`."
    }
  }
}