GitLab · Schema
putApiV4ProjectsIdRequest
CodeDeveloper ToolsPlatformSoftware DevelopmentVersion ControlGitLab
Properties
| Name | Type | Description |
|---|---|---|
| name | stringnull | The name of the project |
| default_branch | stringnull | The default branch of the project |
| path | stringnull | The path of the repository |
| description | stringnull | The description of the project |
| build_git_strategy | stringnull | The Git strategy. Defaults to `fetch` |
| build_timeout | integernull | Build timeout |
| auto_cancel_pending_pipelines | stringnull | Auto-cancel pending pipelines |
| ci_config_path | stringnull | The path to CI config file. Defaults to `.gitlab-ci.yml` |
| service_desk_enabled | booleannull | Disable or enable the service desk |
| issues_enabled | booleannull | Flag indication if the issue tracker is enabled |
| merge_requests_enabled | booleannull | Flag indication if merge requests are enabled |
| wiki_enabled | booleannull | Flag indication if the wiki is enabled |
| jobs_enabled | booleannull | Flag indication if jobs are enabled |
| snippets_enabled | booleannull | Flag indication if snippets are enabled |
| issues_access_level | stringnull | Issues access level. One of `disabled`, `private` or `enabled` |
| repository_access_level | stringnull | Repository access level. One of `disabled`, `private` or `enabled` |
| merge_requests_access_level | stringnull | Merge requests access level. One of `disabled`, `private` or `enabled` |
| forking_access_level | stringnull | Forks access level. One of `disabled`, `private` or `enabled` |
| wiki_access_level | stringnull | Wiki access level. One of `disabled`, `private` or `enabled` |
| builds_access_level | stringnull | Builds access level. One of `disabled`, `private` or `enabled` |
| snippets_access_level | stringnull | Snippets access level. One of `disabled`, `private` or `enabled` |
| package_registry_access_level | stringnull | 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). |
| pages_access_level | stringnull | Pages access level. One of `disabled`, `private`, `enabled` or `public` |
| analytics_access_level | stringnull | Analytics access level. One of `disabled`, `private` or `enabled` |
| container_registry_access_level | stringnull | 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). `enab |
| security_and_compliance_access_level | stringnull | Security and compliance access level. One of `disabled`, `private` or `enabled` |
| releases_access_level | stringnull | Releases access level. One of `disabled`, `private` or `enabled` |
| environments_access_level | stringnull | Environments access level. One of `disabled`, `private` or `enabled` |
| feature_flags_access_level | stringnull | Feature flags access level. One of `disabled`, `private` or `enabled` |
| infrastructure_access_level | stringnull | Infrastructure access level. One of `disabled`, `private` or `enabled` |
| monitor_access_level | stringnull | Monitor access level. One of `disabled`, `private` or `enabled` |
| model_experiments_access_level | stringnull | Model experiments access level. One of `disabled`, `private` or `enabled` |
| model_registry_access_level | stringnull | Model registry access level. One of `disabled`, `private` or `enabled` |
| emails_disabled | booleannull | Deprecated: Use emails_enabled instead. |
| emails_enabled | booleannull | Enable email notifications |
| show_default_award_emojis | booleannull | Show default award emojis |
| show_diff_preview_in_email | booleannull | Include the code diff preview in merge request notification emails |
| warn_about_potentially_unwanted_characters | booleannull | Warn about potentially unwanted characters |
| enforce_auth_checks_on_uploads | booleannull | Enforce auth check on uploads |
| shared_runners_enabled | booleannull | Flag indication if shared runners are enabled for that project |
| group_runners_enabled | booleannull | Flag indication if group runners are enabled for that project |
| resource_group_default_process_mode | stringnull | The process mode of the resource group |
| resolve_outdated_diff_discussions | booleannull | Automatically resolve merge request diff threads on lines changed with a push |
| remove_source_branch_after_merge | booleannull | Remove the source branch by default after merge |
| packages_enabled | booleannull | Deprecated: Use :package_registry_access_level instead. Enable project packages feature |
| container_registry_enabled | booleannull | Deprecated: Use :container_registry_access_level instead. Flag indication if the container registry is enabled for that project |
| container_expiration_policy_attributes | objectnull | Object that contains information on the container expiration policy |
| lfs_enabled | booleannull | Flag indication if Git LFS is enabled for that project |
| visibility | stringnull | The visibility of the project. |
| public_builds | booleannull | Deprecated: Use public_jobs instead. |
| public_jobs | booleannull | Perform public builds |
| request_access_enabled | booleannull | Allow users to request member access |
| only_allow_merge_if_pipeline_succeeds | booleannull | Only allow to merge if builds succeed |
| allow_merge_on_skipped_pipeline | booleannull | Allow to merge if pipeline is skipped |
| only_allow_merge_if_all_discussions_are_resolved | booleannull | Only allow to merge if all threads are resolved |
| tag_list | arraynull | Deprecated: Use :topics instead |
| topics | arraynull | The list of topics for a project |
| avatar | stringnull | Avatar image for project |
| printing_merge_request_link_enabled | booleannull | Show link to create/view merge request when pushing from the command line |
| merge_method | stringnull | The merge method used when merging merge requests |
| suggestion_commit_message | stringnull | The commit message used to apply merge request suggestions |
| merge_commit_template | stringnull | Template used to create merge commit message |
| squash_commit_template | stringnull | Template used to create squash commit message |
| issue_branch_template | stringnull | Template used to create a branch from an issue |
| auto_devops_enabled | booleannull | Flag indication if Auto DevOps is enabled |
| auto_devops_deploy_strategy | stringnull | Auto Deploy strategy |
| autoclose_referenced_issues | booleannull | Flag indication if referenced issues auto-closing is enabled |
| repository_storage | stringnull | Which storage shard the repository is on. Available only to admins |
| squash_option | stringnull | Squash default for project. One of `never`, `always`, `default_on`, or `default_off`. |
| mr_default_target_self | booleannull | Merge requests of this forked project targets itself by default |
| mr_default_title_template | stringnull | Template used to generate the default merge request title. Maximum 100 characters. |
| cicd_catalog_enabled | booleannull | Set whether the project is a CI/CD catalog project |
| only_allow_merge_if_all_status_checks_passed | booleannull | Blocks merge requests from merging unless all status checks have passed |
| approvals_before_merge | integernull | How many approvers should approve merge request by default |
| mirror | booleannull | [Deprecated] Enables pull mirroring in a project |
| mirror_trigger_builds | booleannull | [Deprecated] Pull mirroring triggers builds |
| external_authorization_classification_label | stringnull | The classification label for the project |
| requirements_access_level | stringnull | Requirements feature access level. One of `disabled`, `private` or `enabled` |
| prevent_merge_without_jira_issue | booleannull | Require an associated issue from Jira |
| auto_duo_code_review_enabled | booleannull | Enable automatic reviews by GitLab Duo on merge requests |
| duo_code_review_decisions_enabled | booleannull | Enable approval and change requests by GitLab Duo on merge requests |
| duo_remote_flows_enabled | booleannull | Enable GitLab Duo remote flows for this project |
| duo_sast_fp_detection_enabled | booleannull | Enable GitLab Duo SAST false positive detection for this project |
| duo_secret_detection_fp_enabled | booleannull | Enable GitLab Duo Secret Detection false positive detection for this project |
| duo_dependency_bump_breaking_changes_enabled | booleannull | Enable Agentic Breaking Change Resolution for this project |
| duo_sast_vr_workflow_enabled | booleannull | Enable GitLab Duo SAST vulnerability resolution workflow for this project |
| spp_repository_pipeline_access | booleannull | Grant read-only access to security policy configurations for enforcement in linked CI/CD projects |
| merge_request_title_regex | stringnull | The regex the Merge Request must adhere to |
| merge_request_title_regex_description | stringnull | The description for the regex the Merge Request must adhere to |
| ci_default_git_depth | integernull | Default number of revisions for shallow cloning |
| keep_latest_artifact | booleannull | Indicates if the latest artifact should be kept for this project. |
| ci_forward_deployment_enabled | booleannull | Prevent older deployment jobs that are still pending |
| ci_forward_deployment_rollback_allowed | booleannull | Allow job retries for rollback deployments |
| ci_allow_fork_pipelines_to_run_in_parent_project | booleannull | Allow fork merge request pipelines to run in parent project |
| ci_separated_caches | booleannull | Enable or disable separated caches based on branch protection. |
| restrict_user_defined_variables | booleannull | Restrict use of user-defined variables when triggering a pipeline |
| ci_pipeline_variables_minimum_override_role | stringnull | 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 | booleannull | 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 | arraynull | Claims that will be used to build the sub claim in id tokens |
| ci_delete_pipelines_in_seconds | integernull | Pipelines older than the configured time are deleted |
| max_artifacts_size | integernull | Set the maximum file size for each job's artifacts |
| protect_merge_request_pipelines | booleannull | Make protected CI/CD variables and runners available in merge request pipelines |
| ci_display_pipeline_variables | booleannull | Display all manually-defined variables in the pipeline details page after running a pipeline manually |
| ci_skip_branch_pipelines_for_mrs | booleannull | Skip the branch pipeline when a branch has an open merge request, and run only the merge request pipeline |
| automatic_rebase_enabled | booleannull | Enable automatic rebase of the source branch before merge |
| feature_flags_minimum_role | stringnull | 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 | booleannull | Allow pipeline triggerer to approve deployments |
| mirror_user_id | integernull | [Deprecated] User responsible for all the activity surrounding a pull mirror event. Can only be set by admins |
| only_mirror_protected_branches | booleannull | [Deprecated] Only mirror protected branches. Mutually exclusive with `mirror_branch_regex`. |
| mirror_branch_regex | stringnull | [Deprecated] Only mirror branches match regex. Mutually exclusive with `only_mirror_protected_branches`. |
| mirror_overwrites_diverged_branches | booleannull | [Deprecated] Pull mirror overwrites diverged branches |
| import_url | stringnull | URL from which the project is imported |
| fallback_approvals_required | integernull | Overall approvals required when no rule is present |
| issues_template | stringnull | Default description for Issues. Description is parsed with GitLab Flavored Markdown. |
| merge_requests_template | stringnull | Default description for merge requests. Description is parsed with GitLab Flavored Markdown. |
| merge_pipelines_enabled | booleannull | Enable merged results pipelines. |
| merge_trains_enabled | booleannull | Enable merge trains. |
| merge_trains_skip_train_allowed | booleannull | Allow merge train merge requests to be merged without waiting for pipelines to finish. |
| merge_train_enforcement | stringnull | Merge train enforcement level. One of `allow_bypass`, `enforce_for_all_users`, or `enforce_with_owner_override`. |
| max_pipelines_per_merge_train | integernull | Maximum number of parallel pipelines per merge train for this project. |
| ci_restrict_pipeline_cancellation_role | stringnull | Roles allowed to cancel pipelines and jobs. |
| web_based_commit_signing_enabled | booleannull | Enable web based commit signing for this project |
| security_policy_pipeline_must_succeed | booleannull | Require all security policy pipelines to succeed before merge requests can be merged |
| reviewer_assignment_strategy | stringnull | Strategy used to automatically assign reviewers to merge requests. One of `disabled` or `code_owners`. |
JSON Schema
{
"$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`."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/gitlab-put-api-v4-projects-id-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.