[Skip to main content](https://docs.gitlab.com/api/projects/#skipTarget) [Go to GitLab Docs homepage](https://docs.gitlab.com/)
`/`
[What's new?](https://about.gitlab.com/releases/whats-new/)
English
  * Language
  * English
  * 日本語


v18.10
  *     * [18.10 (not yet released)](https://docs.gitlab.com/api/projects/)
  *     * [18.9 (recently released)](https://docs.gitlab.com/18.9/api/projects/)
    * [18.8](https://docs.gitlab.com/18.8/api/projects/)
    * [18.7](https://archives.docs.gitlab.com/18.7/api/projects/)
  *     * [17.11](https://archives.docs.gitlab.com/17.11/api/projects/)
    * [16.11](https://archives.docs.gitlab.com/16.11/ee/api/projects.html)
  *     * [Archives](https://docs.gitlab.com/archives)


Select theme and layout
  * Light mode
  * Dark mode
  * Auto


  * Fixed width
  * Fluid width


[What's new?](https://about.gitlab.com/releases/whats-new/) [Get free trial](https://gitlab.com/-/trial_registrations/new?glm_source=docs.gitlab.com&amp;glm_content=navigation-cta-docs)
Toggle menu
  * [Use GitLab](https://docs.gitlab.com/user/)
  * [GitLab Duo](https://docs.gitlab.com/user/gitlab_duo/)
  * [Extend](https://docs.gitlab.com/api/)
  * [Install](https://docs.gitlab.com/install/)
  * [Administer](https://docs.gitlab.com/administration/)
  * [Subscribe](https://docs.gitlab.com/subscriptions/)
  * [Contribute](https://docs.gitlab.com/development/)
  * [Solutions](https://docs.gitlab.com/solutions/)


Select a topicUse GitLab GitLab Duo Extend Install Administer Subscribe Contribute Solutions
[Getting started](https://docs.gitlab.com/api/get_started/get_started_extending/)
[Tutorials](https://docs.gitlab.com/tutorials/develop/)
[Integrations](https://docs.gitlab.com/integration/)
[Webhooks](https://docs.gitlab.com/user/project/integrations/webhooks/)
[REST API](https://docs.gitlab.com/api/rest/)
[Resources](https://docs.gitlab.com/api/api_resources/)
[.gitignore (templates)](https://docs.gitlab.com/api/templates/gitignores/)
[.gitlab-ci.yml (templates)](https://docs.gitlab.com/api/templates/gitlab_ci_ymls/)
[Access requests](https://docs.gitlab.com/api/access_requests/)
[Agent for Kubernetes](https://docs.gitlab.com/api/cluster_agents/)
[AI Catalog admin](https://docs.gitlab.com/api/admin/ai_catalog/)
[Alert management](https://docs.gitlab.com/api/alert_management_alerts/)
[Application appearance](https://docs.gitlab.com/api/appearance/)
[Application settings](https://docs.gitlab.com/api/settings/)
[Application statistics](https://docs.gitlab.com/api/statistics/)
[Applications](https://docs.gitlab.com/api/applications/)
[Attestations](https://docs.gitlab.com/api/attestations/)
[Audit events](https://docs.gitlab.com/api/audit_events/)
[Avatar](https://docs.gitlab.com/api/avatar/)
[Branches](https://docs.gitlab.com/api/branches/)
[Broadcast messages](https://docs.gitlab.com/api/broadcast_messages/)
[Cluster discovery (certificate-based) (deprecated)](https://docs.gitlab.com/api/cluster_discovery/)
[Code Suggestions](https://docs.gitlab.com/api/code_suggestions/)
[Commits](https://docs.gitlab.com/api/commits/)
[Compliance and policy settings](https://docs.gitlab.com/api/compliance_policy_settings/)
[Composer](https://docs.gitlab.com/api/packages/composer/)
[Conan v1](https://docs.gitlab.com/api/packages/conan_v1/)
[Conan v2](https://docs.gitlab.com/api/packages/conan_v2/)
[Container registry](https://docs.gitlab.com/api/container_registry/)
[Container repository protection rules](https://docs.gitlab.com/api/container_repository_protection_rules/)
[Container registry protection tag rules](https://docs.gitlab.com/api/container_registry_protection_tag_rules/)
[Container virtual registry](https://docs.gitlab.com/api/container_virtual_registries/)
[Custom attributes](https://docs.gitlab.com/api/custom_attributes/)
[Database migrations](https://docs.gitlab.com/api/database_migrations/)
[Data management](https://docs.gitlab.com/api/admin/data_management/)
[Debian](https://docs.gitlab.com/api/packages/debian/)
[Debian group distributions](https://docs.gitlab.com/api/packages/debian_group_distributions/)
[Debian project distributions](https://docs.gitlab.com/api/packages/debian_project_distributions/)
[Dependencies](https://docs.gitlab.com/api/dependencies/)
[Dependency list export](https://docs.gitlab.com/api/dependency_list_export/)
[Dependency Proxy](https://docs.gitlab.com/api/dependency_proxy/)
[Deploy keys](https://docs.gitlab.com/api/deploy_keys/)
[Deploy tokens](https://docs.gitlab.com/api/deploy_tokens/)
[Deployments](https://docs.gitlab.com/api/deployments/)
[Discussions](https://docs.gitlab.com/api/discussions/)
[Dockerfile (templates)](https://docs.gitlab.com/api/templates/dockerfiles/)
[DORA4 metrics](https://docs.gitlab.com/api/dora/metrics/)
[Emoji reactions](https://docs.gitlab.com/api/emoji_reactions/)
[Environments](https://docs.gitlab.com/api/environments/)
[Epics (deprecated)](https://docs.gitlab.com/api/epics/)
[Error tracking](https://docs.gitlab.com/api/error_tracking/)
[Events](https://docs.gitlab.com/api/events/)
[Experiments](https://docs.gitlab.com/api/experiments/)
[External status checks](https://docs.gitlab.com/api/status_checks/)
[Feature flags](https://docs.gitlab.com/api/feature_flags/)
[Feature flag user lists](https://docs.gitlab.com/api/feature_flag_user_lists/)
[Freeze periods](https://docs.gitlab.com/api/freeze_periods/)
[Geo nodes (deprecated)](https://docs.gitlab.com/api/geo_nodes/)
[Geo sites](https://docs.gitlab.com/api/geo_sites/)
[GitLab Duo Chat completions](https://docs.gitlab.com/api/chat/)
[GitLab Pages](https://docs.gitlab.com/api/pages/)
[GLQL](https://docs.gitlab.com/api/glql/)
[Go Proxy](https://docs.gitlab.com/api/packages/go_proxy/)
[Google Cloud integration](https://docs.gitlab.com/api/google_cloud_integration/)
[Groups](https://docs.gitlab.com/api/groups/)
[Helm](https://docs.gitlab.com/api/packages/helm/)
[Import](https://docs.gitlab.com/api/import/)
[Instance CI/CD variables](https://docs.gitlab.com/api/instance_level_ci_variables/)
[Invitations](https://docs.gitlab.com/api/invitations/)
[Issues](https://docs.gitlab.com/api/issues/)
[Issues (epic) (deprecated)](https://docs.gitlab.com/api/epic_issues/)
[Issues statistics](https://docs.gitlab.com/api/issues_statistics/)
[Jobs](https://docs.gitlab.com/api/jobs/)
[Job artifacts](https://docs.gitlab.com/api/job_artifacts/)
[Job token scopes](https://docs.gitlab.com/api/project_job_token_scopes/)
[Keys](https://docs.gitlab.com/api/keys/)
[License](https://docs.gitlab.com/api/license/)
[Licenses (templates)](https://docs.gitlab.com/api/templates/licenses/)
[Linked epics (deprecated)](https://docs.gitlab.com/api/linked_epics/)
[Links (issue)](https://docs.gitlab.com/api/issue_links/)
[Links (epic) (deprecated)](https://docs.gitlab.com/api/epic_links/)
[Lint .gitlab-ci.yml](https://docs.gitlab.com/api/lint/)
[Markdown](https://docs.gitlab.com/api/markdown/)
[Maven](https://docs.gitlab.com/api/packages/maven/)
[Maven virtual registry](https://docs.gitlab.com/api/maven_virtual_registries/)
[Member roles](https://docs.gitlab.com/api/member_roles/)
[Merge request approvals](https://docs.gitlab.com/api/merge_request_approvals/)
[Merge request approval settings](https://docs.gitlab.com/api/merge_request_approval_settings/)
[Merge request context commits](https://docs.gitlab.com/api/merge_request_context_commits/)
[Merge requests](https://docs.gitlab.com/api/merge_requests/)
[Merge trains](https://docs.gitlab.com/api/merge_trains/)
[Metadata](https://docs.gitlab.com/api/metadata/)
[Model registry](https://docs.gitlab.com/api/model_registry/)
[Namespaces](https://docs.gitlab.com/api/namespaces/)
[Notes (comments)](https://docs.gitlab.com/api/notes/)
[Notification settings](https://docs.gitlab.com/api/notification_settings/)
[npm](https://docs.gitlab.com/api/packages/npm/)
[NuGet](https://docs.gitlab.com/api/packages/nuget/)
[Organizations](https://docs.gitlab.com/api/organizations/)
[Packages](https://docs.gitlab.com/api/packages/)
[Pages domains](https://docs.gitlab.com/api/pages_domains/)
[Personal access tokens](https://docs.gitlab.com/api/personal_access_tokens/)
[Pipeline schedules](https://docs.gitlab.com/api/pipeline_schedules/)
[Pipeline trigger tokens](https://docs.gitlab.com/api/pipeline_triggers/)
[Pipelines](https://docs.gitlab.com/api/pipelines/)
[Plan limits](https://docs.gitlab.com/api/plan_limits/)
[Product analytics](https://docs.gitlab.com/api/product_analytics/)
[Projects](https://docs.gitlab.com/api/projects/)
[Access tokens](https://docs.gitlab.com/api/project_access_tokens/)
[Aliases](https://docs.gitlab.com/api/project_aliases/)
[Badges](https://docs.gitlab.com/api/project_badges/)
[CI/CD variables](https://docs.gitlab.com/api/project_level_variables/)
[Forks](https://docs.gitlab.com/api/project_forks/)
[Import and export](https://docs.gitlab.com/api/project_import_export/)
[Integrations](https://docs.gitlab.com/api/project_integrations/)
[Issue boards](https://docs.gitlab.com/api/boards/)
[Iterations](https://docs.gitlab.com/api/iterations/)
[Labels](https://docs.gitlab.com/api/labels/)
[Members](https://docs.gitlab.com/api/project_members/)
[Markdown uploads](https://docs.gitlab.com/api/project_markdown_uploads/)
[Milestones](https://docs.gitlab.com/api/milestones/)
[Project starring](https://docs.gitlab.com/api/project_starring/)
[Protected branches](https://docs.gitlab.com/api/protected_branches/)
[Protected environments](https://docs.gitlab.com/api/protected_environments/)
[Protected packages](https://docs.gitlab.com/api/project_packages_protection_rules/)
[Protected tags](https://docs.gitlab.com/api/protected_tags/)
[Pull mirroring](https://docs.gitlab.com/api/project_pull_mirroring/)
[Push rules](https://docs.gitlab.com/api/project_push_rules/)
[Relations export](https://docs.gitlab.com/api/project_relations_export/)
[Releases](https://docs.gitlab.com/api/releases/)
[Release links](https://docs.gitlab.com/api/releases/links/)
[Remote mirrors](https://docs.gitlab.com/api/remote_mirrors/)
[Repository storage moves](https://docs.gitlab.com/api/project_repository_storage_moves/)
[Security settings](https://docs.gitlab.com/api/project_security_settings/)
[Snippets](https://docs.gitlab.com/api/project_snippets/)
[Statistics](https://docs.gitlab.com/api/project_statistics/)
[Templates](https://docs.gitlab.com/api/project_templates/)
[Vulnerabilities](https://docs.gitlab.com/api/project_vulnerabilities/)
[Webhooks](https://docs.gitlab.com/api/project_webhooks/)
[Wikis](https://docs.gitlab.com/api/wikis/)
[PyPI](https://docs.gitlab.com/api/packages/pypi/)
[Repositories](https://docs.gitlab.com/api/repositories/)
[Repository files](https://docs.gitlab.com/api/repository_files/)
[Repository submodules](https://docs.gitlab.com/api/repository_submodules/)
[Resource group](https://docs.gitlab.com/api/resource_groups/)
[Resource iteration events](https://docs.gitlab.com/api/resource_iteration_events/)
[Resource label events](https://docs.gitlab.com/api/resource_label_events/)
[Resource milestone events](https://docs.gitlab.com/api/resource_milestone_events/)
[Resource state events](https://docs.gitlab.com/api/resource_state_events/)
[Resource weight events](https://docs.gitlab.com/api/resource_weight_events/)
[Ruby gems](https://docs.gitlab.com/api/packages/rubygems/)
[Runners](https://docs.gitlab.com/api/runners/)
[Runner controllers](https://docs.gitlab.com/api/runner_controllers/)
[Runner controller tokens](https://docs.gitlab.com/api/runner_controller_tokens/)
[Search](https://docs.gitlab.com/api/search/)
[Search migrations](https://docs.gitlab.com/api/search_admin/)
[Secure files](https://docs.gitlab.com/api/secure_files/)
[Service accounts](https://docs.gitlab.com/api/service_accounts/)
[Service Ping](https://docs.gitlab.com/api/usage_data/)
[Sidekiq metrics](https://docs.gitlab.com/api/sidekiq_metrics/)
[Sidekiq queues](https://docs.gitlab.com/api/admin_sidekiq_queues/)
[Snippet repository storage moves](https://docs.gitlab.com/api/snippet_repository_storage_moves/)
[Snippets](https://docs.gitlab.com/api/snippets/)
[Suggestions](https://docs.gitlab.com/api/suggestions/)
[System hooks](https://docs.gitlab.com/api/system_hooks/)
[Tags](https://docs.gitlab.com/api/tags/)
[Terraform registry](https://docs.gitlab.com/api/packages/terraform-modules/)
[To-Do List](https://docs.gitlab.com/api/todos/)
[Token information](https://docs.gitlab.com/api/admin/token/)
[Topics](https://docs.gitlab.com/api/topics/)
[Users](https://docs.gitlab.com/api/users/)
[Version](https://docs.gitlab.com/api/version/)
[Virtual registries cleanup policies](https://docs.gitlab.com/api/virtual_registries_cleanup_policies/)
[Vulnerabilities](https://docs.gitlab.com/api/vulnerabilities/)
[Vulnerability archive export](https://docs.gitlab.com/api/vulnerability_archive_exports/)
[Vulnerability export](https://docs.gitlab.com/api/vulnerability_exports/)
[Vulnerability findings](https://docs.gitlab.com/api/vulnerability_findings/)
[Web commits](https://docs.gitlab.com/api/web_commits/)
[Authentication](https://docs.gitlab.com/api/rest/authentication/)
[Third-party clients](https://docs.gitlab.com/api/rest/third_party_clients/)
[Deprecations and removals](https://docs.gitlab.com/api/rest/deprecations/)
[OpenAPI](https://docs.gitlab.com/api/openapi/openapi_interactive/)
[Automate storage management](https://docs.gitlab.com/user/storage_management_automation/)
[Troubleshooting](https://docs.gitlab.com/api/rest/troubleshooting/)
[GraphQL API](https://docs.gitlab.com/api/graphql/)
[OAuth 2.0 identity provider API](https://docs.gitlab.com/api/oauth2/)
[GitLab Duo CLI (duo)](https://docs.gitlab.com/user/gitlab_duo_cli/)
[GitLab CLI (glab)](https://docs.gitlab.com/cli/)
[Editor and IDE extensions](https://docs.gitlab.com/editor_extensions/)
/
  1. [GitLab Docs](https://docs.gitlab.com/)
  2. [Extend](https://docs.gitlab.com/api/)
  3. [REST API](https://docs.gitlab.com/api/rest/)
  4. [Resources](https://docs.gitlab.com/api/api_resources/)
  5. [Projects](https://docs.gitlab.com/api/projects/)


* * *
# Projects API
  * Tier: Free, Premium, Ultimate
  * Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated


Use this API to manage GitLab projects and their associated settings. A project is a central hub for collaboration where you store code, track issues, and organize team activities. For more information, see [create a project](https://docs.gitlab.com/user/project/).
The Projects API contains endpoints that:
  * Retrieve project information and metadata
  * Create, edit, and remove projects
  * Control project visibility, access permissions, and security settings
  * Manage project features like issue tracking, merge requests, and CI/CD
  * Archive and unarchive projects
  * Transfer projects between namespaces
  * Manage deployment and container registry settings


## Prerequisites[](https://docs.gitlab.com/api/projects/#prerequisites "Permalink")
  * Any [default role](https://docs.gitlab.com/user/permissions/#roles) on a project to read the project’s properties.
  * The Owner or Maintainer role on a project to edit the project’s properties.


## Project visibility level[](https://docs.gitlab.com/api/projects/#project-visibility-level "Permalink")
A project in GitLab can have a visibility level of either:
  * Private
  * Internal
  * Public


The visibility level is determined by the `visibility` field in the project.
For more information, see [Project visibility](https://docs.gitlab.com/user/public_access/).
The fields returned in responses vary based on the [permissions](https://docs.gitlab.com/user/permissions/) of the authenticated user.
## Project feature visibility level[](https://docs.gitlab.com/api/projects/#project-feature-visibility-level "Permalink")
You can control the availability of project settings when you create or edit a project. For example, to disable `forking_access_level` for an existing project:
shell
```
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --data '{"forking_access_level": "disabled"}' \
  --url "https://gitlab.example.com/api/v4/projects/<project_id>"
```

Each setting can be defined independently and accepts the following values:
  * `disabled`: Disable the feature.
  * `private`: Enable and set the feature to **Only project members**.
  * `enabled`: Enable and set the feature to **Everyone with access**.
  * `public`: Enable and set the feature to **Everyone**. Available only for `pages_access_level`.


For more information, see [Change the visibility of individual features in a project](https://docs.gitlab.com/user/public_access/#change-the-visibility-of-individual-features-in-a-project).
Attribute | Type | Required | Description
---|---|---|---
`analytics_access_level` | string | No | Set visibility of [analytics](https://docs.gitlab.com/user/analytics/).
`builds_access_level` | string | No | Set visibility of [pipelines](https://docs.gitlab.com/ci/pipelines/settings/#change-which-users-can-view-your-pipelines).
`container_registry_access_level` | string | No | Set visibility of [container registry](https://docs.gitlab.com/user/packages/container_registry/#change-visibility-of-the-container-registry).
`environments_access_level` | string | No | Set visibility of [environments](https://docs.gitlab.com/ci/environments/).
`feature_flags_access_level` | string | No | Set visibility of [feature flags](https://docs.gitlab.com/operations/feature_flags/).
`forking_access_level` | string | No | Set visibility of [forks](https://docs.gitlab.com/user/project/repository/forking_workflow/).
`infrastructure_access_level` | string | No | Set visibility of [infrastructure management](https://docs.gitlab.com/user/infrastructure/).
`issues_access_level` | string | No | Set visibility of [issues](https://docs.gitlab.com/user/project/issues/).
`merge_requests_access_level` | string | No | Set visibility of [merge requests](https://docs.gitlab.com/user/project/merge_requests/).
`model_experiments_access_level` | string | No | Set visibility of [machine learning model experiments](https://docs.gitlab.com/user/project/ml/experiment_tracking/).
`model_registry_access_level` | string | No | Set visibility of [machine learning model registry](https://docs.gitlab.com/user/project/ml/model_registry/#access-the-model-registry).
`monitor_access_level` | string | No | Set visibility of [application performance monitoring](https://docs.gitlab.com/operations/).
`pages_access_level` | string | No | Set visibility of [GitLab Pages](https://docs.gitlab.com/user/project/pages/pages_access_control/).
`releases_access_level` | string | No | Set visibility of [releases](https://docs.gitlab.com/user/project/releases/).
`repository_access_level` | string | No | Set visibility of [repository](https://docs.gitlab.com/user/project/repository/).
`requirements_access_level` | string | No | Set visibility of [requirements management](https://docs.gitlab.com/user/project/requirements/).
`security_and_compliance_access_level` | string | No | Set visibility of [security and compliance](https://docs.gitlab.com/user/application_security/).
`snippets_access_level` | string | No | Set visibility of [snippets](https://docs.gitlab.com/user/snippets/#change-default-visibility-of-snippets).
`wiki_access_level` | string | No | Set visibility of [wiki](https://docs.gitlab.com/user/project/wiki/#enable-or-disable-a-project-wiki).
## Deprecated attributes[](https://docs.gitlab.com/api/projects/#deprecated-attributes "Permalink")
These attributes are deprecated and could be removed in a future version of the REST API. Use the alternative attributes instead.
Deprecated attribute | Alternative
---|---
`tag_list` | Use `topics` instead.
`marked_for_deletion_at` | Use `marked_for_deletion_on` instead. Premium and Ultimate only.
`approvals_before_merge` |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/work_items/353097) in GitLab 16.0. Use the [Merge request approvals API](https://docs.gitlab.com/api/merge_request_approvals/) instead. Premium and Ultimate only.
`packages_enabled` |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/work_items/454759) in GitLab 17.10. Use `package_registry_access_level` instead.
`container_registry_enabled` | Use `container_registry_access_level` instead.
`public_builds` | Use `public_jobs` instead.
`emails_disabled` | Use `emails_enabled` instead.
`issues_enabled` | Use `issues_access_level` instead.
`jobs_enabled` | Use `builds_access_level` instead.
`merge_requests_enabled` | Use `merge_request_access_level` instead.
`snippets_enabled` | Use `snippets_access_level` instead.
`wiki_enabled` | Use `wiki_access_level` instead.
`restrict_user_defined_variables` |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/154510) in GitLab 17.7. Use `ci_pipeline_variables_minimum_override_role` instead.
## Retrieve a project[](https://docs.gitlab.com/api/projects/#retrieve-a-project "Permalink")
Retrieves the specified project. This endpoint can be accessed without authentication if the project is publicly accessible.
```
GET /projects/:id
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`license` | boolean | No | Include project license data.
`statistics` | boolean | No | Include project statistics. Available only to users with the Reporter, Developer, Maintainer, or Owner role.
`with_custom_attributes` | boolean | No | Include [custom attributes](https://docs.gitlab.com/api/custom_attributes/) in response. Administrator access.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the project.
`description` | string | Description of the project.
`description_html` | string | Description of the project in HTML format.
`name` | string | Name of the project.
`name_with_namespace` | string | Name of the project with its namespace.
`path` | string | Path of the project.
`path_with_namespace` | string | Path of the project with its namespace.
`created_at` | datetime | Timestamp when the project was created.
`default_branch` | string | Default branch of the project.
`tag_list` | array of strings | Deprecated. Use `topics` instead. List of tags for the project.
`topics` | array of strings | List of topics for the project.
`ssh_url_to_repo` | string | SSH URL to clone the repository.
`http_url_to_repo` | string | HTTP URL to clone the repository.
`web_url` | string | URL to access the project in a browser.
`readme_url` | string | URL to the project’s README file.
`forks_count` | integer | Number of forks of the project.
`avatar_url` | string | URL to the project’s avatar image.
`star_count` | integer | Number of stars the project has received.
`last_activity_at` | datetime | Timestamp of the last activity in the project.
`visibility` | string | Visibility level of the project. Possible values: `private`, `internal`, or `public`.
`namespace` | object | Namespace information for the project.
`namespace.id` | integer | ID of the namespace.
`namespace.name` | string | Name of the namespace.
`namespace.path` | string | Path of the namespace.
`namespace.kind` | string | Type of namespace. Possible values: `user` or `group`.
`namespace.full_path` | string | Full path of the namespace.
`namespace.parent_id` | integer | ID of the parent namespace, if applicable.
`namespace.avatar_url` | string | URL to the namespace’s avatar image.
`namespace.web_url` | string | URL to access the namespace in a browser.
`container_registry_image_prefix` | string | Prefix for container registry images.
`_links` | object | Collection of API endpoint links related to the project.
`_links.self` | string | URL to the project resource.
`_links.issues` | string | URL to the project’s issues.
`_links.merge_requests` | string | URL to the project’s merge requests.
`_links.repo_branches` | string | URL to the project’s repository branches.
`_links.labels` | string | URL to the project’s labels.
`_links.events` | string | URL to the project’s events.
`_links.members` | string | URL to the project’s members.
`_links.cluster_agents` | string | URL to the project’s cluster agents.
`marked_for_deletion_at` | date | Deprecated. Use `marked_for_deletion_on` instead. Date when the project is scheduled for deletion.
`marked_for_deletion_on` | date | Date when the project is scheduled for deletion.
`packages_enabled` | boolean | Whether the package registry is enabled for the project.
`empty_repo` | boolean | Whether the repository is empty.
`archived` | boolean | Whether the project is archived.
`owner` | object | Information about the project owner.
`owner.id` | integer | ID of the project Owner.
`owner.username` | string | Username of the owner.
`owner.public_email` | string | Public email address of the owner.
`owner.name` | string | Name of the project Owner.
`owner.state` | string | Current state of the owner account.
`owner.locked` | boolean | Indicates if the owner account is locked.
`owner.avatar_url` | string | URL to the owner’s avatar image.
`owner.web_url` | string | Web URL for the owner’s profile.
`owner.created_at` | datetime | Timestamp when the Owner was created.
`resolve_outdated_diff_discussions` | boolean | Whether outdated diff discussions are automatically resolved.
`container_expiration_policy` | object | Settings for container image expiration policy.
`container_expiration_policy.cadence` | string | How often the container expiration policy runs.
`container_expiration_policy.enabled` | boolean | Whether the container expiration policy is enabled.
`container_expiration_policy.keep_n` | integer | Number of container images to keep.
`container_expiration_policy.older_than` | string | Remove container images older than this value.
`container_expiration_policy.name_regex` | string | Deprecated. Use `name_regex_delete` instead. Regular expression to match container image names.
`container_expiration_policy.name_regex_delete` | string | Regular expression to match container image names to delete.
`container_expiration_policy.name_regex_keep` | string | Regular expression to match container image names to keep.
`container_expiration_policy.next_run_at` | datetime | Timestamp for the next scheduled policy run.
`repository_object_format` | string | Object format used by the repository. Possible values: `sha1` or `sha256`.
`issues_enabled` | boolean | Whether issues are enabled for the project.
`merge_requests_enabled` | boolean | Whether merge requests are enabled for the project.
`wiki_enabled` | boolean | Whether the wiki is enabled for the project.
`jobs_enabled` | boolean | Whether jobs are enabled for the project.
`snippets_enabled` | boolean | Whether snippets are enabled for the project.
`container_registry_enabled` | boolean | Deprecated. Use `container_registry_access_level` instead. Whether the container registry is enabled.
`service_desk_enabled` | boolean | Whether Service Desk is enabled for the project.
`service_desk_address` | string | Email address for the Service Desk.
`can_create_merge_request_in` | boolean | Whether the current user can create merge requests in the project.
`issues_access_level` | string | Access level for the issues feature. Possible values: `disabled`, `private`, or `enabled`.
`repository_access_level` | string | Access level for the repository feature. Possible values: `disabled`, `private`, or `enabled`.
`merge_requests_access_level` | string | Access level for the merge requests feature. Possible values: `disabled`, `private`, or `enabled`.
`forking_access_level` | string | Access level for forking the project. Possible values: `disabled`, `private`, or `enabled`.
`wiki_access_level` | string | Access level for the wiki feature. Possible values: `disabled`, `private`, or `enabled`.
`builds_access_level` | string | Access level for the CI/CD builds feature. Possible values: `disabled`, `private`, or `enabled`.
`snippets_access_level` | string | Access level for the snippets feature. Possible values: `disabled`, `private`, or `enabled`.
`pages_access_level` | string | Access level for GitLab Pages. Possible values: `disabled`, `private`, `enabled`, or `public`.
`analytics_access_level` | string | Access level for analytics features. Possible values: `disabled`, `private`, or `enabled`.
`container_registry_access_level` | string | Access level for the container registry. Possible values: `disabled`, `private`, or `enabled`.
`security_and_compliance_access_level` | string | Access level for security and compliance features. Possible values: `disabled`, `private`, or `enabled`.
`releases_access_level` | string | Access level for the releases feature. Possible values: `disabled`, `private`, or `enabled`.
`environments_access_level` | string | Access level for the environments feature. Possible values: `disabled`, `private`, or `enabled`.
`feature_flags_access_level` | string | Access level for the feature flags feature. Possible values: `disabled`, `private`, or `enabled`.
`infrastructure_access_level` | string | Access level for the infrastructure feature. Possible values: `disabled`, `private`, or `enabled`.
`monitor_access_level` | string | Access level for the monitor feature. Possible values: `disabled`, `private`, or `enabled`.
`model_experiments_access_level` | string | Access level for the model experiments feature. Possible values: `disabled`, `private`, or `enabled`.
`model_registry_access_level` | string | Access level for the model registry feature. Possible values: `disabled`, `private`, or `enabled`.
`package_registry_access_level` | string | Access level for the package registry feature. Possible values: `disabled`, `private`, or `enabled`.
`emails_disabled` | boolean | Indicates if emails are disabled for the project.
`emails_enabled` | boolean | Indicates if emails are enabled for the project.
`show_diff_preview_in_email` | boolean | Indicates if diff previews are shown in email notifications.
`shared_runners_enabled` | boolean | Whether shared runners are enabled for the project.
`lfs_enabled` | boolean | Indicates if Git LFS is enabled for the project.
`creator_id` | integer | ID of the user who created the project.
`import_url` | string | URL the project was imported from.
`import_type` | string | Type of import used for the project.
`import_status` | string | Status of the project import.
`import_error` | string | Error message if the import failed.
`open_issues_count` | integer | Number of open issues.
`updated_at` | datetime | Timestamp when the project was last updated.
`ci_default_git_depth` | integer | Default Git depth for CI/CD pipelines. Only visible if you have administrator access or the Owner role for the project.
`ci_delete_pipelines_in_seconds` | integer | Time in seconds before old pipelines are deleted.
`ci_forward_deployment_enabled` | boolean | Whether forward deployment is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_forward_deployment_rollback_allowed` | boolean | Whether rollback is allowed for forward deployments.
`ci_job_token_scope_enabled` | boolean | Indicates if CI/CD job token scope is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_separated_caches` | boolean | Whether CI/CD caches are separated by branch. Only visible if you have administrator access or the Owner role for the project.
`ci_allow_fork_pipelines_to_run_in_parent_project` | boolean | Whether fork pipelines can run in the parent project. Only visible if you have administrator access or the Owner role for the project.
`ci_id_token_sub_claim_components` | array of strings | Components included in the CI/CD ID token subject claim.
`build_git_strategy` | string | Git strategy used for CI/CD builds (fetch or clone). Only visible if you have administrator access or the Owner role for the project.
`keep_latest_artifact` | boolean | Indicates if the latest artifact is kept when a new one is created. Only visible if you have administrator access or the Owner role for the project.
`restrict_user_defined_variables` | boolean | Whether user-defined variables are restricted. Only visible if you have administrator access or the Owner role for the project.
`ci_pipeline_variables_minimum_override_role` | string | Minimum role required to override pipeline variables.
`runner_token_expiration_interval` | integer | Expiration interval in seconds for runner tokens. Only visible if you have administrator access or the Owner role for the project.
`group_runners_enabled` | boolean | Whether group runners are enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`resource_group_default_process_mode` | string | Default process mode for resource groups.
`auto_cancel_pending_pipelines` | string | Setting for automatically canceling pending pipelines. Only visible if you have administrator access or the Owner role for the project.
`build_timeout` | integer | Timeout in seconds for CI/CD jobs. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_enabled` | boolean | Whether Auto DevOps is enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_deploy_strategy` | string | Deployment strategy for Auto DevOps. Only visible if you have administrator access or the Owner role for the project.
`ci_push_repository_for_job_token_allowed` | boolean | Whether pushing to the repository is allowed using a job token.
`runners_token` | string | Token for registering runners with the project. Only visible if you have administrator access or the Owner role for the project.
`ci_config_path` | string | Path to the CI/CD configuration file.
`public_jobs` | boolean | Whether job logs are publicly accessible.
`shared_with_groups` | array of objects | List of groups the project is shared with.
`shared_with_groups[].group_id` | integer | ID of the group the project is shared with.
`shared_with_groups[].group_name` | string | Name of the group the project is shared with.
`shared_with_groups[].group_full_path` | string | Full path of the group the project is shared with.
`shared_with_groups[].group_access_level` | integer | Access level granted to the group.
`only_allow_merge_if_pipeline_succeeds` | boolean | Whether merges are allowed only if the pipeline succeeds.
`allow_merge_on_skipped_pipeline` | boolean | Whether merges are allowed when the pipeline is skipped.
`request_access_enabled` | boolean | Whether users can request access to the project.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | Whether merges are allowed only if all discussions are resolved.
`remove_source_branch_after_merge` | boolean | Whether the source branch is automatically removed after merge.
`printing_merge_request_link_enabled` | boolean | Indicates if merge request links are printed after pushing.
`printing_merge_requests_link_enabled` | boolean | Whether the merge request link is printed after a push.
`merge_method` | string | Merge method used for the project. Possible values: `merge`, `rebase_merge`, or `ff`.
`merge_request_title_regex` | string | Regex pattern for validating merge request titles.
`merge_request_title_regex_description` | string | Description of the merge request title regex validation.
`squash_option` | string | Squash option for merge requests.
`enforce_auth_checks_on_uploads` | boolean | Whether authentication checks are enforced on uploads.
`suggestion_commit_message` | string | Custom commit message for suggestions.
`merge_commit_template` | string | Template for merge commit messages.
`squash_commit_template` | string | Template for squash commit messages.
`issue_branch_template` | string | Template for branch names created from issues.
`warn_about_potentially_unwanted_characters` | boolean | Whether to warn about potentially unwanted characters.
`autoclose_referenced_issues` | boolean | Whether referenced issues are automatically closed.
`max_artifacts_size` | integer | Maximum size in MB for CI/CD artifacts.
`approvals_before_merge` | integer | Deprecated. Use merge request approvals API instead. Number of approvals required before merge.
`mirror` | boolean | Whether the project is a mirror.
`external_authorization_classification_label` | string | External authorization classification label.
`requirements_enabled` | boolean | Indicates if requirements management is enabled.
`requirements_access_level` | string | Access level for the requirements feature.
`security_and_compliance_enabled` | boolean | Indicates if security and compliance features are enabled.
`secret_push_protection_enabled` | boolean | Whether secret push protection is enabled.
`pre_receive_secret_detection_enabled` | boolean | Indicates if pre-receive secret detection is enabled.
`compliance_frameworks` | array of strings | Compliance frameworks applied to the project.
`issues_template` | string | Default description for issues. Description is parsed with GitLab Flavored Markdown. Premium and Ultimate only.
`merge_requests_template` | string | Template for merge request descriptions. Premium and Ultimate only.
`ci_restrict_pipeline_cancellation_role` | string | Minimum role required to cancel pipelines.
`merge_pipelines_enabled` | boolean | Indicates if merge pipelines are enabled.
`merge_trains_enabled` | boolean | Indicates if merge trains are enabled.
`merge_trains_skip_train_allowed` | boolean | Indicates if skipping the merge train is allowed.
`only_allow_merge_if_all_status_checks_passed` | boolean | Whether merges are allowed only if all status checks have passed. Ultimate only.
`allow_pipeline_trigger_approve_deployment` | boolean | Whether pipeline triggers can approve deployments.
`prevent_merge_without_jira_issue` | boolean | Indicates if merges require an associated Jira issue.
`duo_remote_flows_enabled` | boolean | Indicates if GitLab Duo remote flows are enabled.
`duo_foundational_flows_enabled` | boolean | Indicates if GitLab Duo foundational flows are enabled.
`duo_sast_fp_detection_enabled` | boolean | Indicates if GitLab Duo SAST false positive detection is enabled.
`web_based_commit_signing_enabled` | boolean | Indicates if web-based commit signing is enabled.
`spp_repository_pipeline_access` | boolean | Repository pipeline access for security policies. Only visible if the security orchestration policies feature is available.
`permissions` | object | User permissions for the project.
`permissions.project_access` | object | Project-level access permissions for the user.
`permissions.project_access.access_level` | integer | Access level for the project.
`permissions.project_access.notification_level` | integer | Notification level for the project.
`permissions.group_access` | object | Group-level access permissions for the user.
`permissions.group_access.access_level` | integer | Access level for the group.
`permissions.group_access.notification_level` | integer | Notification level for the group.
`license_url` | string | URL to the project’s license file.
`license.key` | string | Key identifier for the license.
`license.name` | string | Full name of the license.
`license.nickname` | string | Nickname of the license.
`license.html_url` | string | URL to view the license details.
`license.source_url` | string | URL to the license source text.
`repository_storage` | string | Storage location for the project’s repository.
`mirror_user_id` | integer | ID of the user who set up the mirror.
`mirror_trigger_builds` | boolean | Whether mirror updates trigger builds.
`only_mirror_protected_branches` | boolean | Whether only protected branches are mirrored.
`mirror_overwrites_diverged_branches` | boolean | Whether the mirror overwrites diverged branches.
`statistics.commit_count` | integer | Number of commits in the project.
`statistics.storage_size` | integer | Total storage size in bytes.
`statistics.repository_size` | integer | Repository storage size in bytes.
`statistics.wiki_size` | integer | Wiki storage size in bytes.
`statistics.lfs_objects_size` | integer | LFS objects storage size in bytes.
`statistics.job_artifacts_size` | integer | Job artifacts storage size in bytes.
`statistics.pipeline_artifacts_size` | integer | Pipeline artifacts storage size in bytes.
`statistics.packages_size` | integer | Packages storage size in bytes.
`statistics.snippets_size` | integer | Snippets storage size in bytes.
`statistics.uploads_size` | integer | Uploads storage size in bytes.
`statistics.container_registry_size` | integer | Container registry storage size in bytes. 1
`forked_from_project` | object | The upstream project this project was forked from. If the upstream project is private, an authentication token is required to view this field.
`mr_default_target_self` | boolean | Whether merge requests target this project by default. If `false`, merge requests target the upstream project. Appears only if the project is a fork.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/projects/<project_id>"
```

Example response:
json
```
{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "owner": {
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13:46:02Z"
  },
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "container_expiration_policy": {
    "cadence": "7d",
    "enabled": false,
    "keep_n": null,
    "older_than": null,
    "name_regex": null, // to be deprecated in GitLab 13.0 in favor of `name_regex_delete`
    "name_regex_delete": null,
    "name_regex_keep": null,
    "next_run_at": "2020-01-07T21:42:58.658Z"
  },
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora",
    "avatar_url": "http://localhost:3000/uploads/group/avatar/3/foo.jpg",
    "web_url": "http://localhost:3000/groups/diaspora"
  },
  "import_url": null,
  "import_type": null,
  "import_status": "none",
  "import_error": null,
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  },
  "archived": false,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
  "ci_default_git_depth": 50,
  "ci_forward_deployment_enabled": true,
  "ci_forward_deployment_rollback_allowed": true,
  "ci_allow_fork_pipelines_to_run_in_parent_project": true,
  "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
  "ci_separated_caches": true,
  "ci_restrict_pipeline_cancellation_role": "developer",
  "ci_pipeline_variables_minimum_override_role": "maintainer",
  "ci_push_repository_for_job_token_allowed": false,
  "ci_display_pipeline_variables": false,
  "protect_merge_request_pipelines": true,
  "public_jobs": true,
  "shared_with_groups": [
    {
      "group_id": 4,
      "group_name": "Twitter",
      "group_full_path": "twitter",
      "group_access_level": 30
    },
    {
      "group_id": 3,
      "group_name": "Gitlab Org",
      "group_full_path": "gitlab-org",
      "group_access_level": 10
    }
  ],
  "repository_storage": "default",
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "allow_pipeline_trigger_approve_deployment": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "printing_merge_requests_link_enabled": true,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "auto_devops_enabled": true,
  "auto_devops_deploy_strategy": "continuous",
  "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
  "mirror": false,
  "mirror_user_id": 45,
  "mirror_trigger_builds": false,
  "only_mirror_protected_branches": false,
  "mirror_overwrites_diverged_branches": false,
  "external_authorization_classification_label": null,
  "packages_enabled": true,
  "empty_repo": false,
  "service_desk_enabled": false,
  "service_desk_address": null,
  "autoclose_referenced_issues": true,
  "suggestion_commit_message": null,
  "enforce_auth_checks_on_uploads": true,
  "merge_commit_template": null,
  "squash_commit_template": null,
  "issue_branch_template": "gitlab/%{id}-%{title}",
  "marked_for_deletion_at": "2020-04-03", // Deprecated in favor of marked_for_deletion_on. Planned for removal in a future version of the REST API.
  "marked_for_deletion_on": "2020-04-03",
  "compliance_frameworks": [ "sox" ],
  "warn_about_potentially_unwanted_characters": true,
  "secret_push_protection_enabled": false,
  "statistics": {
    "commit_count": 37,
    "storage_size": 1038090,
    "repository_size": 1038090,
    "wiki_size" : 0,
    "lfs_objects_size": 0,
    "job_artifacts_size": 0,
    "pipeline_artifacts_size": 0,
    "packages_size": 0,
    "snippets_size": 0,
    "uploads_size": 0,
    "container_registry_size": 0
  },
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  },
  "spp_repository_pipeline_access": false // Only visible if the security_orchestration_policies feature is available
}
```

## List projects[](https://docs.gitlab.com/api/projects/#list-projects "Permalink")
List projects and project attributes.
### List all projects[](https://docs.gitlab.com/api/projects/#list-all-projects "Permalink")
History
  * `web_based_commit_signing_enabled` [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/194650) in GitLab 18.2 [with a flag](https://docs.gitlab.com/administration/feature_flags/) named `use_web_based_commit_signing_enabled`. Disabled by default.


The availability of the `web_based_commit_signing_enabled` attribute is controlled by a feature flag. For more information, see the history. This feature is available for testing, but not ready for production use.
Lists all projects on the instance accessible to the authenticated user. Unauthenticated requests return only public projects with a limited subset of attributes.
You can filter responses by [custom attributes](https://docs.gitlab.com/api/custom_attributes/).
This endpoint supports pagination:
  * Use offset-based pagination to access up to 50,000 projects.
  * Use keyset-based pagination to list more than 50,000 projects.


For more information, see [Pagination](https://docs.gitlab.com/api/rest/#pagination).
```
GET /projects
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`archived` | boolean | No | Limit by archived status.
`id_after` | integer | No | Limit results to projects with IDs greater than the specified ID.
`id_before` | integer | No | Limit results to projects with IDs less than the specified ID.
`imported` | boolean | No | Limit results to projects which were imported from external systems by current user.
`include_hidden` | boolean | No | Include hidden projects. _(administrators only)_ Premium and Ultimate only.
`include_pending_delete` | boolean | No | Include projects pending deletion. _(administrators only)_
`last_activity_after` | datetime | No | Limit results to projects with last activity after specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`)
`last_activity_before` | datetime | No | Limit results to projects with last activity before specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`)
`membership` | boolean | No | Limit by projects that the current user is a member of.
`min_access_level` | integer | No | Limit to projects where the current user has at least the specified access level. Possible values: `5` (Minimal access), `10` (Guest), `15` (Planner), `20` (Reporter), `30` (Developer), `40` (Maintainer), or `50` (Owner).
`order_by` | string | No | Return projects ordered by `id`, `name`, `path`, `created_at`, `updated_at`, `star_count`, `last_activity_at`, or `similarity` fields. `repository_size`, `storage_size`, `packages_size` or `wiki_size` fields are only allowed for administrators. `similarity` is only available when searching and is limited to projects that the current user is a member of. Default is `created_at`.
`owned` | boolean | No | Limit by projects explicitly owned by the current user.
`repository_checksum_failed` | boolean | No | Limit projects where the repository checksum calculation has failed. Premium and Ultimate only.
`repository_storage` | string | No | Limit results to projects stored on `repository_storage`. _(administrators only)_
`search_namespaces` | boolean | No | Include ancestor namespaces when matching search criteria. Default is `false`.
`search` | string | No | Return list of projects with a `path`, `name`, or `description` matching the search criteria (case-insensitive, substring match). Multiple terms can be provided, separated by an escaped space, either `+` or `%20`, and will be ANDed together. Example: `one+two` will match substrings `one` and `two` (in any order).
`simple` | boolean | No | If `true`, return only limited fields for each project. Unauthenticated requests return only public projects with limited fields, even if `simple` is not set.
`sort` | string | No | Return projects sorted in `asc` or `desc` order. Default is `desc`.
`starred` | boolean | No | Limit by projects starred by the current user.
`statistics` | boolean | No | Include project statistics. Available only to users with the Reporter, Developer, Maintainer, or Owner role.
`topic_id` | integer | No | Limit results to projects with the assigned topic given by the topic ID.
`topic` | string | No | Comma-separated topic names. Limit results to projects that match all of given topics. See `topics` attribute.
`updated_after` | datetime | No | Limit results to projects last updated after the specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`). [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393979) in GitLab 15.10. For this filter to work, you must also provide `updated_at` as the `order_by` attribute.
`updated_before` | datetime | No | Limit results to projects last updated before the specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`). [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/393979) in GitLab 15.10. For this filter to work, you must also provide `updated_at` as the `order_by` attribute.
`visibility` | string | No | Limit by visibility `public`, `internal`, or `private`.
`wiki_checksum_failed` | boolean | No | Limit projects where the wiki checksum calculation has failed. Premium and Ultimate only.
`with_custom_attributes` | boolean | No | Include [custom attributes](https://docs.gitlab.com/api/custom_attributes/) in response. _(administrator only)_
`with_issues_enabled` | boolean | No | Limit by enabled issues feature.
`with_merge_requests_enabled` | boolean | No | Limit by enabled merge requests feature.
`with_programming_language` | string | No | Limit by projects which use the given programming language.
`marked_for_deletion_on` | date | No | Filter by date when project was marked for deletion. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/463939) in GitLab 17.1. Premium and Ultimate only.
`active` | boolean | No | Limit by projects that are not archived and not marked for deletion.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the project.
`description` | string | Description of the project.
`name` | string | Name of the project.
`name_with_namespace` | string | Name of the project with its namespace.
`path` | string | Path of the project.
`path_with_namespace` | string | Path of the project with its namespace.
`created_at` | datetime | Timestamp when the project was created.
`default_branch` | string | Default branch of the project.
`tag_list` | array of strings | Deprecated. Use `topics` instead. List of tags for the project.
`topics` | array of strings | List of topics for the project.
`ssh_url_to_repo` | string | SSH URL to clone the repository.
`http_url_to_repo` | string | HTTP URL to clone the repository.
`web_url` | string | URL to access the project in a browser.
`readme_url` | string | URL to the project’s README file.
`forks_count` | integer | Number of forks of the project.
`avatar_url` | string | URL to the project’s avatar image.
`star_count` | integer | Number of stars the project has received.
`last_activity_at` | datetime | Timestamp of the last activity in the project.
`visibility` | string | Visibility level of the project. Possible values: `private`, `internal`, or `public`.
`namespace` | object | Namespace information for the project.
`namespace.id` | integer | ID of the namespace.
`namespace.name` | string | Name of the namespace.
`namespace.path` | string | Path of the namespace.
`namespace.kind` | string | Type of namespace. Possible values: `user` or `group`.
`namespace.full_path` | string | Full path of the namespace.
`namespace.parent_id` | integer | ID of the parent namespace, if applicable.
`namespace.avatar_url` | string | URL to the namespace’s avatar image.
`namespace.web_url` | string | URL to access the namespace in a browser.
`container_registry_image_prefix` | string | Prefix for container registry images.
`_links` | object | Collection of API endpoint links related to the project.
`_links.self` | string | URL to the project resource.
`_links.issues` | string | URL to the project’s issues.
`_links.merge_requests` | string | URL to the project’s merge requests.
`_links.repo_branches` | string | URL to the project’s repository branches.
`_links.labels` | string | URL to the project’s labels.
`_links.events` | string | URL to the project’s events.
`_links.members` | string | URL to the project’s members.
`_links.cluster_agents` | string | URL to the project’s cluster agents.
`marked_for_deletion_at` | date | Deprecated. Use `marked_for_deletion_on` instead. Date when the project is scheduled for deletion.
`marked_for_deletion_on` | date | Date when the project is scheduled for deletion.
`packages_enabled` | boolean | Whether the package registry is enabled for the project.
`empty_repo` | boolean | Whether the repository is empty.
`archived` | boolean | Whether the project is archived.
`resolve_outdated_diff_discussions` | boolean | Whether outdated diff discussions are automatically resolved.
`container_expiration_policy` | object | Settings for container image expiration policy.
`container_expiration_policy.cadence` | string | How often the container expiration policy runs.
`container_expiration_policy.enabled` | boolean | Whether the container expiration policy is enabled.
`container_expiration_policy.keep_n` | integer | Number of container images to keep.
`container_expiration_policy.older_than` | string | Remove container images older than this value.
`container_expiration_policy.name_regex` | string | Deprecated. Use `name_regex_delete` instead. Regular expression to match container image names.
`container_expiration_policy.name_regex_keep` | string | Regular expression to match container image names to keep.
`container_expiration_policy.next_run_at` | datetime | Timestamp for the next scheduled policy run.
`repository_object_format` | string | Object format used by the repository (sha1 or sha256).
`issues_enabled` | boolean | Whether issues are enabled for the project.
`merge_requests_enabled` | boolean | Whether merge requests are enabled for the project.
`wiki_enabled` | boolean | Whether the wiki is enabled for the project.
`jobs_enabled` | boolean | Whether jobs are enabled for the project.
`snippets_enabled` | boolean | Whether snippets are enabled for the project.
`container_registry_enabled` | boolean | Deprecated. Use `container_registry_access_level` instead. Whether the container registry is enabled.
`service_desk_enabled` | boolean | Whether Service Desk is enabled for the project.
`can_create_merge_request_in` | boolean | Whether the current user can create merge requests in the project.
`issues_access_level` | string | Access level for the issues feature. Possible values: `disabled`, `private`, or `enabled`.
`repository_access_level` | string | Access level for the repository feature. Possible values: `disabled`, `private`, or `enabled`.
`merge_requests_access_level` | string | Access level for the merge requests feature. Possible values: `disabled`, `private`, or `enabled`.
`forking_access_level` | string | Access level for forking the project. Possible values: `disabled`, `private`, or `enabled`.
`wiki_access_level` | string | Access level for the wiki feature. Possible values: `disabled`, `private`, or `enabled`.
`builds_access_level` | string | Access level for the CI/CD builds feature. Possible values: `disabled`, `private`, or `enabled`.
`snippets_access_level` | string | Access level for the snippets feature. Possible values: `disabled`, `private`, or `enabled`.
`pages_access_level` | string | Access level for GitLab Pages. Possible values: `disabled`, `private`, `enabled`, or `public`.
`analytics_access_level` | string | Access level for analytics features. Possible values: `disabled`, `private`, or `enabled`.
`container_registry_access_level` | string | Access level for the container registry. Possible values: `disabled`, `private`, or `enabled`.
`security_and_compliance_access_level` | string | Access level for security and compliance features. Possible values: `disabled`, `private`, or `enabled`.
`releases_access_level` | string | Access level for the releases feature. Possible values: `disabled`, `private`, or `enabled`.
`environments_access_level` | string | Access level for the environments feature. Possible values: `disabled`, `private`, or `enabled`.
`feature_flags_access_level` | string | Access level for the feature flags feature. Possible values: `disabled`, `private`, or `enabled`.
`infrastructure_access_level` | string | Access level for the infrastructure feature. Possible values: `disabled`, `private`, or `enabled`.
`monitor_access_level` | string | Access level for the monitor feature. Possible values: `disabled`, `private`, or `enabled`.
`model_experiments_access_level` | string | Access level for the model experiments feature. Possible values: `disabled`, `private`, or `enabled`.
`model_registry_access_level` | string | Access level for the model registry feature. Possible values: `disabled`, `private`, or `enabled`.
`package_registry_access_level` | string | Access level for the package registry feature. Possible values: `disabled`, `private`, or `enabled`.
`emails_disabled` | boolean | Indicates if emails are disabled for the project.
`emails_enabled` | boolean | Indicates if emails are enabled for the project.
`show_diff_preview_in_email` | boolean | Indicates if diff previews are shown in email notifications.
`shared_runners_enabled` | boolean | Whether shared runners are enabled for the project.
`lfs_enabled` | boolean | Indicates if Git LFS is enabled for the project.
`creator_id` | integer | ID of the user who created the project.
`import_status` | string | Status of the project import.
`open_issues_count` | integer | Number of open issues.
`description_html` | string | Description of the project in HTML format.
`updated_at` | datetime | Timestamp when the project was last updated.
`ci_config_path` | string | Path to the CI/CD configuration file.
`public_jobs` | boolean | Whether job logs are publicly accessible.
`shared_with_groups` | array of objects | List of groups the project is shared with.
`only_allow_merge_if_pipeline_succeeds` | boolean | Whether merges are allowed only if the pipeline succeeds.
`allow_merge_on_skipped_pipeline` | boolean | Whether merges are allowed when the pipeline is skipped.
`request_access_enabled` | boolean | Whether users can request access to the project.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | Whether merges are allowed only if all discussions are resolved.
`remove_source_branch_after_merge` | boolean | Whether the source branch is automatically removed after merge.
`printing_merge_request_link_enabled` | boolean | Indicates if merge request links are printed after pushing.
`merge_method` | string | Merge method used for the project. Possible values: `merge`, `rebase_merge`, or `ff`.
`merge_request_title_regex` | string | Regex pattern for validating merge request titles.
`merge_request_title_regex_description` | string | Description of the merge request title regex validation.
`squash_option` | string | Squash option for merge requests.
`enforce_auth_checks_on_uploads` | boolean | Whether authentication checks are enforced on uploads.
`suggestion_commit_message` | string | Custom commit message for suggestions.
`merge_commit_template` | string | Template for merge commit messages.
`squash_commit_template` | string | Template for squash commit messages.
`issue_branch_template` | string | Template for branch names created from issues.
`warn_about_potentially_unwanted_characters` | boolean | Whether to warn about potentially unwanted characters.
`autoclose_referenced_issues` | boolean | Whether referenced issues are automatically closed.
`max_artifacts_size` | integer | Maximum size in MB for CI/CD artifacts.
`approvals_before_merge` | integer | Deprecated. Use merge request approvals API instead. Number of approvals required before merge.
`mirror` | boolean | Whether the project is a mirror.
`external_authorization_classification_label` | string | External authorization classification label.
`requirements_enabled` | boolean | Indicates if requirements management is enabled.
`requirements_access_level` | string | Access level for the requirements feature.
`security_and_compliance_enabled` | boolean | Indicates if security and compliance features are enabled.
`compliance_frameworks` | array of strings | Compliance frameworks applied to the project.
`issues_template` | string | Default description for issues. Description is parsed with GitLab Flavored Markdown. Premium and Ultimate only.
`merge_requests_template` | string | Template for merge request descriptions. Premium and Ultimate only.
`merge_pipelines_enabled` | boolean | Indicates if merge pipelines are enabled.
`merge_trains_enabled` | boolean | Indicates if merge trains are enabled.
`merge_trains_skip_train_allowed` | boolean | Indicates if skipping the merge train is allowed.
`only_allow_merge_if_all_status_checks_passed` | boolean | Whether merges are allowed only if all status checks have passed. Ultimate only.
`allow_pipeline_trigger_approve_deployment` | boolean | Whether pipeline triggers can approve deployments.
`prevent_merge_without_jira_issue` | boolean | Indicates if merges require an associated Jira issue.
`duo_remote_flows_enabled` | boolean | Indicates if GitLab Duo remote flows are enabled.
`duo_foundational_flows_enabled` | boolean | Indicates if GitLab Duo foundational flows are enabled.
`duo_sast_fp_detection_enabled` | boolean | Indicates if GitLab Duo SAST false positive detection is enabled.
`spp_repository_pipeline_access` | boolean | Repository pipeline access for security policies. Only visible if the security orchestration policies feature is available.
`permissions` | object | User permissions for the project.
`permissions.project_access` | object | Project access permissions for the user.
`permissions.group_access` | object | Group access permissions for the user.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/projects
```

Example response:
json
```
[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "default_branch": "main",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "ssh_url_to_repo": "git@gitlab.example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "https://gitlab.example.com/diaspora/diaspora-client.git",
    "web_url": "https://gitlab.example.com/diaspora/diaspora-client",
    "readme_url": "https://gitlab.example.com/diaspora/diaspora-client/blob/main/README.md",
    "avatar_url": "https://gitlab.example.com/uploads/project/avatar/4/uploads/avatar.png",
    "forks_count": 0,
    "star_count": 0,
    "last_activity_at": "2022-06-24T17:11:26.841Z",
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora",
      "parent_id": null,
      "avatar_url": "https://gitlab.example.com/uploads/project/avatar/6/uploads/avatar.png",
      "web_url": "https://gitlab.example.com/diaspora"
    },
    "container_registry_image_prefix": "registry.gitlab.example.com/diaspora/diaspora-client",
    "_links": {
      "self": "https://gitlab.example.com/api/v4/projects/4",
      "issues": "https://gitlab.example.com/api/v4/projects/4/issues",
      "merge_requests": "https://gitlab.example.com/api/v4/projects/4/merge_requests",
      "repo_branches": "https://gitlab.example.com/api/v4/projects/4/repository/branches",
      "labels": "https://gitlab.example.com/api/v4/projects/4/labels",
      "events": "https://gitlab.example.com/api/v4/projects/4/events",
      "members": "https://gitlab.example.com/api/v4/projects/4/members",
      "cluster_agents": "https://gitlab.example.com/api/v4/projects/4/cluster_agents"
    },
    "packages_enabled": true, // deprecated, use package_registry_access_level instead
    "package_registry_access_level": "enabled",
    "empty_repo": false,
    "archived": false,
    "visibility": "public",
    "resolve_outdated_diff_discussions": false,
    "container_expiration_policy": {
      "cadence": "1month",
      "enabled": true,
      "keep_n": 1,
      "older_than": "14d",
      "name_regex": "",
      "name_regex_keep": ".*-main",
      "next_run_at": "2022-06-25T17:11:26.865Z"
    },
    "issues_enabled": true,
    "merge_requests_enabled": true,
    "wiki_enabled": true,
    "jobs_enabled": true,
    "snippets_enabled": true,
    "container_registry_enabled": true,
    "service_desk_enabled": true,
    "can_create_merge_request_in": true,
    "issues_access_level": "enabled",
    "repository_access_level": "enabled",
    "merge_requests_access_level": "enabled",
    "forking_access_level": "enabled",
    "wiki_access_level": "enabled",
    "builds_access_level": "enabled",
    "snippets_access_level": "enabled",
    "pages_access_level": "enabled",
    "analytics_access_level": "enabled",
    "container_registry_access_level": "enabled",
    "security_and_compliance_access_level": "private",
    "emails_disabled": null,
    "emails_enabled": null,
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "lfs_enabled": true,
    "creator_id": 1,
    "import_url": null,
    "import_type": null,
    "import_status": "none",
    "import_error": null,
    "open_issues_count": 0,
    "ci_default_git_depth": 20,
    "ci_forward_deployment_enabled": true,
    "ci_forward_deployment_rollback_allowed": true,
    "ci_allow_fork_pipelines_to_run_in_parent_project": true,
    "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
    "ci_job_token_scope_enabled": false,
    "ci_separated_caches": true,
    "ci_restrict_pipeline_cancellation_role": "developer",
    "ci_pipeline_variables_minimum_override_role": "maintainer",
    "ci_push_repository_for_job_token_allowed": false,
    "ci_display_pipeline_variables": false,
    "protect_merge_request_pipelines": true,
    "public_jobs": true,
    "build_timeout": 3600,
    "auto_cancel_pending_pipelines": "enabled",
    "ci_config_path": "",
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": null,
    "allow_pipeline_trigger_approve_deployment": false,
    "restrict_user_defined_variables": false,
    "request_access_enabled": true,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": true,
    "printing_merge_request_link_enabled": true,
    "merge_method": "merge",
    "squash_option": "default_off",
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "squash_commit_template": null,
    "issue_branch_template": "gitlab/%{id}-%{title}",
    "auto_devops_enabled": false,
    "auto_devops_deploy_strategy": "continuous",
    "autoclose_referenced_issues": true,
    "keep_latest_artifact": true,
    "runner_token_expiration_interval": null,
    "external_authorization_classification_label": "",
    "requirements_enabled": false,
    "requirements_access_level": "enabled",
    "security_and_compliance_enabled": false,
    "secret_push_protection_enabled": false,
    "compliance_frameworks": [],
    "warn_about_potentially_unwanted_characters": true,
    "permissions": {
      "project_access": null,
      "group_access": null
    }
  },
  {
    ...
  }
]
```

`last_activity_at` is updated based on [project activity](https://docs.gitlab.com/user/project/working_with_projects/#view-project-activity) and [project events](https://docs.gitlab.com/api/events/). To optimize database performance, this field updates at most once per hour. Events occurring within one hour of the last update do not modify the timestamp. As a result, `last_activity_at` can be out of date by up to one hour. `updated_at` is updated whenever the project record is changed in the database.
### List all personal projects for a user[](https://docs.gitlab.com/api/projects/#list-all-personal-projects-for-a-user "Permalink")
Lists all personal projects for a specified user. The following restrictions apply:
  * Returns only projects in the user’s personal namespace, not group or subgroup projects.
  * If the user profile is private, returns an empty list.
  * Requests without authentication return only public projects.


This endpoint supports pagination:
  * Use offset-based pagination to access up to 50,000 projects.
  * Use keyset-based pagination to list more than 50,000 projects.


For more information, see [Pagination](https://docs.gitlab.com/api/rest/#pagination).
```
GET /users/:user_id/projects
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`user_id` | string | Yes | The ID or username of the user.
`archived` | boolean | No | Limit by archived status.
`id_after` | integer | No | Limit results to projects with IDs greater than the specified ID.
`id_before` | integer | No | Limit results to projects with IDs less than the specified ID.
`membership` | boolean | No | Limit by projects that the current user is a member of.
`min_access_level` | integer | No | Limit to projects where the current user has at least the specified access level. Possible values: `5` (Minimal access), `10` (Guest), `15` (Planner), `20` (Reporter), `30` (Developer), `40` (Maintainer), or `50` (Owner).
`order_by` | string | No | Return projects ordered by `id`, `name`, `path`, `created_at`, `updated_at`, `star_count`, or `last_activity_at` fields. Default is `created_at`.
`owned` | boolean | No | Limit by projects explicitly owned by the current user.
`search` | string | No | Return list of projects matching the search criteria.
`simple` | boolean | No | If `true`, return only limited fields for each project. Unauthenticated requests return only public projects with limited fields, even if `simple` is not set.
`sort` | string | No | Return projects sorted in `asc` or `desc` order. Default is `desc`.
`starred` | boolean | No | Limit by projects starred by the current user.
`statistics` | boolean | No | Include project statistics. Available only to users with the Reporter, Developer, Maintainer, or Owner role.
`updated_after` | datetime | No | Limit results to projects last updated after the specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`).
`updated_before` | datetime | No | Limit results to projects last updated before the specified time. Format: ISO 8601 (`YYYY-MM-DDTHH:MM:SSZ`).
`visibility` | string | No | Limit by visibility. Possible values: `public`, `internal`, or `private`.
`with_custom_attributes` | boolean | No | Include [custom attributes](https://docs.gitlab.com/api/custom_attributes/) in response. Administrator access.
`with_issues_enabled` | boolean | No | Limit by enabled issues feature.
`with_merge_requests_enabled` | boolean | No | Limit by enabled merge requests feature.
`with_programming_language` | string | No | Limit by projects which use the given programming language.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the project.
`description` | string | Description of the project.
`name` | string | Name of the project.
`name_with_namespace` | string | Name of the project with its namespace.
`path` | string | Path of the project.
`path_with_namespace` | string | Path of the project with its namespace.
`created_at` | datetime | Timestamp when the project was created.
`default_branch` | string | Default branch of the project.
`tag_list` | array of strings | Deprecated. Use `topics` instead. List of tags for the project.
`topics` | array of strings | List of topics for the project.
`ssh_url_to_repo` | string | SSH URL to clone the repository.
`http_url_to_repo` | string | HTTP URL to clone the repository.
`web_url` | string | URL to access the project in a browser.
`readme_url` | string | URL to the project’s README file.
`forks_count` | integer | Number of forks of the project.
`avatar_url` | string | URL to the project’s avatar image.
`star_count` | integer | Number of stars the project has received.
`last_activity_at` | datetime | Timestamp of the last activity in the project.
`visibility` | string | Visibility level of the project. Possible values: `private`, `internal`, or `public`.
`namespace` | object | Namespace information for the project.
`namespace.id` | integer | ID of the namespace.
`namespace.name` | string | Name of the namespace.
`namespace.path` | string | Path of the namespace.
`namespace.kind` | string | Type of namespace. Possible values: `user` or `group`.
`namespace.full_path` | string | Full path of the namespace.
`namespace.parent_id` | integer | ID of the parent namespace, if applicable.
`namespace.avatar_url` | string | URL to the namespace’s avatar image.
`namespace.web_url` | string | URL to access the namespace in a browser.
`container_registry_image_prefix` | string | Prefix for container registry images.
`_links` | object | Collection of API endpoint links related to the project.
`_links.self` | string | URL to the project resource.
`_links.issues` | string | URL to the project’s issues.
`_links.merge_requests` | string | URL to the project’s merge requests.
`_links.repo_branches` | string | URL to the project’s repository branches.
`_links.labels` | string | URL to the project’s labels.
`_links.events` | string | URL to the project’s events.
`_links.members` | string | URL to the project’s members.
`_links.cluster_agents` | string | URL to the project’s cluster agents.
`marked_for_deletion_at` | date | Deprecated. Use `marked_for_deletion_on` instead. Date when the project is scheduled for deletion.
`marked_for_deletion_on` | date | Date when the project is scheduled for deletion.
`packages_enabled` | boolean | Whether the package registry is enabled for the project.
`empty_repo` | boolean | Whether the repository is empty.
`archived` | boolean | Whether the project is archived.
`resolve_outdated_diff_discussions` | boolean | Whether outdated diff discussions are automatically resolved.
`container_expiration_policy` | object | Settings for container image expiration policy.
`container_expiration_policy.cadence` | string | How often the container expiration policy runs.
`container_expiration_policy.enabled` | boolean | Whether the container expiration policy is enabled.
`container_expiration_policy.keep_n` | integer | Number of container images to keep.
`container_expiration_policy.older_than` | string | Remove container images older than this value.
`container_expiration_policy.name_regex` | string | Deprecated. Use `name_regex_delete` instead. Regular expression to match container image names.
`container_expiration_policy.name_regex_keep` | string | Regular expression to match container image names to keep.
`container_expiration_policy.next_run_at` | datetime | Timestamp for the next scheduled policy run.
`repository_object_format` | string | Object format used by the repository (sha1 or sha256).
`issues_enabled` | boolean | Whether issues are enabled for the project.
`merge_requests_enabled` | boolean | Whether merge requests are enabled for the project.
`wiki_enabled` | boolean | Whether the wiki is enabled for the project.
`jobs_enabled` | boolean | Whether jobs are enabled for the project.
`snippets_enabled` | boolean | Whether snippets are enabled for the project.
`container_registry_enabled` | boolean | Deprecated. Use `container_registry_access_level` instead. Whether the container registry is enabled.
`service_desk_enabled` | boolean | Whether Service Desk is enabled for the project.
`can_create_merge_request_in` | boolean | Whether the current user can create merge requests in the project.
`issues_access_level` | string | Access level for the issues feature. Possible values: `disabled`, `private`, or `enabled`.
`repository_access_level` | string | Access level for the repository feature. Possible values: `disabled`, `private`, or `enabled`.
`merge_requests_access_level` | string | Access level for the merge requests feature. Possible values: `disabled`, `private`, or `enabled`.
`forking_access_level` | string | Access level for forking the project. Possible values: `disabled`, `private`, or `enabled`.
`wiki_access_level` | string | Access level for the wiki feature. Possible values: `disabled`, `private`, or `enabled`.
`builds_access_level` | string | Access level for the CI/CD builds feature. Possible values: `disabled`, `private`, or `enabled`.
`snippets_access_level` | string | Access level for the snippets feature. Possible values: `disabled`, `private`, or `enabled`.
`pages_access_level` | string | Access level for GitLab Pages. Possible values: `disabled`, `private`, `enabled`, or `public`.
`analytics_access_level` | string | Access level for analytics features. Possible values: `disabled`, `private`, or `enabled`.
`container_registry_access_level` | string | Access level for the container registry. Possible values: `disabled`, `private`, or `enabled`.
`security_and_compliance_access_level` | string | Access level for security and compliance features. Possible values: `disabled`, `private`, or `enabled`.
`releases_access_level` | string | Access level for the releases feature. Possible values: `disabled`, `private`, or `enabled`.
`environments_access_level` | string | Access level for the environments feature. Possible values: `disabled`, `private`, or `enabled`.
`feature_flags_access_level` | string | Access level for the feature flags feature. Possible values: `disabled`, `private`, or `enabled`.
`infrastructure_access_level` | string | Access level for the infrastructure feature. Possible values: `disabled`, `private`, or `enabled`.
`monitor_access_level` | string | Access level for the monitor feature. Possible values: `disabled`, `private`, or `enabled`.
`model_experiments_access_level` | string | Access level for the model experiments feature. Possible values: `disabled`, `private`, or `enabled`.
`model_registry_access_level` | string | Access level for the model registry feature. Possible values: `disabled`, `private`, or `enabled`.
`package_registry_access_level` | string | Access level for the package registry feature. Possible values: `disabled`, `private`, or `enabled`.
`emails_disabled` | boolean | Indicates if emails are disabled for the project.
`emails_enabled` | boolean | Indicates if emails are enabled for the project.
`show_diff_preview_in_email` | boolean | Indicates if diff previews are shown in email notifications.
`shared_runners_enabled` | boolean | Whether shared runners are enabled for the project.
`lfs_enabled` | boolean | Indicates if Git LFS is enabled for the project.
`creator_id` | integer | ID of the user who created the project.
`import_status` | string | Status of the project import.
`open_issues_count` | integer | Number of open issues.
`description_html` | string | Description of the project in HTML format.
`updated_at` | datetime | Timestamp when the project was last updated.
`ci_default_git_depth` | integer | Default Git depth for CI/CD pipelines. Only visible if you have administrator access or the Owner role for the project.
`ci_forward_deployment_enabled` | boolean | Whether forward deployment is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_job_token_scope_enabled` | boolean | Indicates if CI/CD job token scope is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_separated_caches` | boolean | Whether CI/CD caches are separated by branch. Only visible if you have administrator access or the Owner role for the project.
`ci_allow_fork_pipelines_to_run_in_parent_project` | boolean | Whether fork pipelines can run in the parent project. Only visible if you have administrator access or the Owner role for the project.
`build_git_strategy` | string | Git strategy used for CI/CD builds (fetch or clone). Only visible if you have administrator access or the Owner role for the project.
`keep_latest_artifact` | boolean | Indicates if the latest artifact is kept when a new one is created. Only visible if you have administrator access or the Owner role for the project.
`restrict_user_defined_variables` | boolean | Whether user-defined variables are restricted. Only visible if you have administrator access or the Owner role for the project.
`runners_token` | string | Token for registering runners with the project. Only visible if you have administrator access or the Owner role for the project.
`runner_token_expiration_interval` | integer | Expiration interval in seconds for runner tokens. Only visible if you have administrator access or the Owner role for the project.
`group_runners_enabled` | boolean | Whether group runners are enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`auto_cancel_pending_pipelines` | string | Setting for automatically canceling pending pipelines. Only visible if you have administrator access or the Owner role for the project.
`build_timeout` | integer | Timeout in seconds for CI/CD jobs. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_enabled` | boolean | Whether Auto DevOps is enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_deploy_strategy` | string | Deployment strategy for Auto DevOps. Only visible if you have administrator access or the Owner role for the project.
`ci_config_path` | string | Path to the CI/CD configuration file.
`public_jobs` | boolean | Whether job logs are publicly accessible.
`shared_with_groups` | array of objects | List of groups the project is shared with.
`only_allow_merge_if_pipeline_succeeds` | boolean | Whether merges are allowed only if the pipeline succeeds.
`allow_merge_on_skipped_pipeline` | boolean | Whether merges are allowed when the pipeline is skipped.
`request_access_enabled` | boolean | Whether users can request access to the project.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | Whether merges are allowed only if all discussions are resolved.
`remove_source_branch_after_merge` | boolean | Whether the source branch is automatically removed after merge.
`printing_merge_request_link_enabled` | boolean | Indicates if merge request links are printed after pushing.
`merge_method` | string | Merge method used for the project. Possible values: `merge`, `rebase_merge`, or `ff`.
`merge_request_title_regex` | string | Regex pattern for validating merge request titles.
`merge_request_title_regex_description` | string | Description of the merge request title regex validation.
`squash_option` | string | Squash option for merge requests.
`enforce_auth_checks_on_uploads` | boolean | Whether authentication checks are enforced on uploads.
`suggestion_commit_message` | string | Custom commit message for suggestions.
`merge_commit_template` | string | Template for merge commit messages.
`squash_commit_template` | string | Template for squash commit messages.
`issue_branch_template` | string | Template for branch names created from issues.
`warn_about_potentially_unwanted_characters` | boolean | Whether to warn about potentially unwanted characters.
`autoclose_referenced_issues` | boolean | Whether referenced issues are automatically closed.
`max_artifacts_size` | integer | Maximum size in MB for CI/CD artifacts.
`approvals_before_merge` | integer | Deprecated. Use merge request approvals API instead. Number of approvals required before merge.
`mirror` | boolean | Whether the project is a mirror.
`external_authorization_classification_label` | string | External authorization classification label.
`requirements_enabled` | boolean | Indicates if requirements management is enabled.
`requirements_access_level` | string | Access level for the requirements feature.
`security_and_compliance_enabled` | boolean | Indicates if security and compliance features are enabled.
`compliance_frameworks` | array of strings | Compliance frameworks applied to the project.
`issues_template` | string | Default description for issues. Description is parsed with GitLab Flavored Markdown. Premium and Ultimate only.
`merge_requests_template` | string | Template for merge request descriptions. Premium and Ultimate only.
`merge_pipelines_enabled` | boolean | Indicates if merge pipelines are enabled.
`merge_trains_enabled` | boolean | Indicates if merge trains are enabled.
`merge_trains_skip_train_allowed` | boolean | Indicates if skipping the merge train is allowed.
`only_allow_merge_if_all_status_checks_passed` | boolean | Whether merges are allowed only if all status checks have passed. Ultimate only.
`allow_pipeline_trigger_approve_deployment` | boolean | Whether pipeline triggers can approve deployments.
`prevent_merge_without_jira_issue` | boolean | Indicates if merges require an associated Jira issue.
`duo_remote_flows_enabled` | boolean | Indicates if GitLab Duo remote flows are enabled.
`duo_foundational_flows_enabled` | boolean | Indicates if GitLab Duo foundational flows are enabled.
`duo_sast_fp_detection_enabled` | boolean | Indicates if GitLab Duo SAST false positive detection is enabled.
`spp_repository_pipeline_access` | boolean | Repository pipeline access for security policies. Only visible if the security orchestration policies feature is available.
`permissions` | object | User permissions for the project.
`permissions.project_access` | object | Project access permissions for the user.
`permissions.group_access` | object | Group access permissions for the user.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/users/:user_id/projects
```

Example response:
json
```
[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
    "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "owner": {
      "id": 3,
      "name": "Diaspora",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "import_url": null,
    "import_type": null,
    "import_status": "none",
    "import_error": null,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    "import_status": "none",
    "archived": false,
    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 0,
    "runners_token": "b8547b1dc37721d05889db52fa2f02",
    "ci_default_git_depth": 50,
    "ci_forward_deployment_enabled": true,
    "ci_forward_deployment_rollback_allowed": true,
    "ci_allow_fork_pipelines_to_run_in_parent_project": true,
    "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
    "ci_separated_caches": true,
    "ci_restrict_pipeline_cancellation_role": "developer",
    "ci_pipeline_variables_minimum_override_role": "maintainer",
    "ci_push_repository_for_job_token_allowed": false,
    "ci_display_pipeline_variables": false,
    "protect_merge_request_pipelines": true,
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "allow_pipeline_trigger_approve_deployment": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "squash_commit_template": null,
    "secret_push_protection_enabled": false,
    "issue_branch_template": "gitlab/%{id}-%{title}",
    "marked_for_deletion_at": "2020-04-03", // Deprecated in favor of marked_for_deletion_on. Planned for removal in a future version of the REST API.
    "marked_for_deletion_on": "2020-04-03",
    "statistics": {
      "commit_count": 37,
      "storage_size": 1038090,
      "repository_size": 1038090,
      "wiki_size" : 0,
      "lfs_objects_size": 0,
      "job_artifacts_size": 0,
      "pipeline_artifacts_size": 0,
      "packages_size": 0,
      "snippets_size": 0,
      "uploads_size": 0,
      "container_registry_size": 0
    },
    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  },
  {
    "id": 6,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
    "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "puppet"
    ],
    "topics": [
      "example",
      "puppet"
    ],
    "owner": {
      "id": 4,
      "name": "Brightbox",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Puppet",
    "name_with_namespace": "Brightbox / Puppet",
    "path": "puppet",
    "path_with_namespace": "brightbox/puppet",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "import_url": null,
    "import_type": null,
    "import_status": "none",
    "import_error": null,
    "namespace": {
      "id": 4,
      "name": "Brightbox",
      "path": "brightbox",
      "kind": "group",
      "full_path": "brightbox"
    },
    "import_status": "none",
    "import_error": null,
    "permissions": {
      "project_access": {
        "access_level": 10,
        "notification_level": 3
      },
      "group_access": {
        "access_level": 50,
        "notification_level": 3
      }
    },
    "archived": false,
    "avatar_url": null,
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 0,
    "runners_token": "b8547b1dc37721d05889db52fa2f02",
    "ci_default_git_depth": 0,
    "ci_forward_deployment_enabled": true,
    "ci_forward_deployment_rollback_allowed": true,
    "ci_allow_fork_pipelines_to_run_in_parent_project": true,
    "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
    "ci_separated_caches": true,
    "ci_restrict_pipeline_cancellation_role": "developer",
    "ci_pipeline_variables_minimum_override_role": "maintainer",
    "ci_push_repository_for_job_token_allowed": false,
    "ci_display_pipeline_variables": false,
    "protect_merge_request_pipelines": true,
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "allow_pipeline_trigger_approve_deployment": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "auto_devops_enabled": true,
    "auto_devops_deploy_strategy": "continuous",
    "repository_storage": "default",
    "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
    "mirror": false,
    "mirror_user_id": 45,
    "mirror_trigger_builds": false,
    "only_mirror_protected_branches": false,
    "mirror_overwrites_diverged_branches": false,
    "external_authorization_classification_label": null,
    "packages_enabled": true, // deprecated, use package_registry_access_level instead
    "empty_repo": false,
    "package_registry_access_level": "enabled",
    "service_desk_enabled": false,
    "service_desk_address": null,
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "squash_commit_template": null,
    "secret_push_protection_enabled": false,
    "issue_branch_template": "gitlab/%{id}-%{title}",
    "statistics": {
      "commit_count": 12,
      "storage_size": 2066080,
      "repository_size": 2066080,
      "wiki_size" : 0,
      "lfs_objects_size": 0,
      "job_artifacts_size": 0,
      "pipeline_artifacts_size": 0,
      "packages_size": 0,
      "snippets_size": 0,
      "uploads_size": 0,
      "container_registry_size": 0
    },
    "container_registry_image_prefix": "registry.example.com/brightbox/puppet",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  }
]
```

### List all projects contributions for a user[](https://docs.gitlab.com/api/projects/#list-all-projects-contributions-for-a-user "Permalink")
Lists all contributions to visible projects for a specified user. Returns only contributions in the past year. For more information about what counts as a contribution, see [View projects you work with](https://docs.gitlab.com/user/project/working_with_projects/#view-projects-you-work-with).
```
GET /users/:user_id/contributed_projects
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`user_id` | string | Yes | The ID or username of the user.
`order_by` | string | No | Return projects ordered by `id`, `name`, `path`, `created_at`, `updated_at`, `star_count`, or `last_activity_at` fields. Default is `created_at`.
`simple` | boolean | No | If `true`, return only limited fields for each project. Unauthenticated requests return only public projects with limited fields, even if `simple` is not set.
`sort` | string | No | Return projects sorted in `asc` or `desc` order. Default is `desc`.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the project.
`description` | string | Description of the project.
`name` | string | Name of the project.
`name_with_namespace` | string | Name of the project with its namespace.
`path` | string | Path of the project.
`path_with_namespace` | string | Path of the project with its namespace.
`created_at` | datetime | Timestamp when the project was created.
`default_branch` | string | Default branch of the project.
`tag_list` | array of strings | Deprecated. Use `topics` instead. List of tags for the project.
`topics` | array of strings | List of topics for the project.
`ssh_url_to_repo` | string | SSH URL to clone the repository.
`http_url_to_repo` | string | HTTP URL to clone the repository.
`web_url` | string | URL to access the project in a browser.
`readme_url` | string | URL to the project’s README file.
`forks_count` | integer | Number of forks of the project.
`avatar_url` | string | URL to the project’s avatar image.
`star_count` | integer | Number of stars the project has received.
`last_activity_at` | datetime | Timestamp of the last activity in the project.
`visibility` | string | Visibility level of the project. Possible values: `private`, `internal`, or `public`.
`namespace` | object | Namespace information for the project.
`namespace.id` | integer | ID of the namespace.
`namespace.name` | string | Name of the namespace.
`namespace.path` | string | Path of the namespace.
`namespace.kind` | string | Type of namespace. Possible values: `user` or `group`.
`namespace.full_path` | string | Full path of the namespace.
`namespace.parent_id` | integer | ID of the parent namespace, if applicable.
`namespace.avatar_url` | string | URL to the namespace’s avatar image.
`namespace.web_url` | string | URL to access the namespace in a browser.
`container_registry_image_prefix` | string | Prefix for container registry images.
`_links` | object | Collection of API endpoint links related to the project.
`_links.self` | string | URL to the project resource.
`_links.issues` | string | URL to the project’s issues.
`_links.merge_requests` | string | URL to the project’s merge requests.
`_links.repo_branches` | string | URL to the project’s repository branches.
`_links.labels` | string | URL to the project’s labels.
`_links.events` | string | URL to the project’s events.
`_links.members` | string | URL to the project’s members.
`_links.cluster_agents` | string | URL to the project’s cluster agents.
`marked_for_deletion_at` | date | Deprecated. Use `marked_for_deletion_on` instead. Date when the project is scheduled for deletion.
`marked_for_deletion_on` | date | Date when the project is scheduled for deletion.
`packages_enabled` | boolean | Whether the package registry is enabled for the project.
`empty_repo` | boolean | Whether the repository is empty.
`archived` | boolean | Whether the project is archived.
`resolve_outdated_diff_discussions` | boolean | Whether outdated diff discussions are automatically resolved.
`container_expiration_policy` | object | Settings for container image expiration policy.
`container_expiration_policy.cadence` | string | How often the container expiration policy runs.
`container_expiration_policy.enabled` | boolean | Whether the container expiration policy is enabled.
`container_expiration_policy.keep_n` | integer | Number of container images to keep.
`container_expiration_policy.older_than` | string | Remove container images older than this value.
`container_expiration_policy.name_regex` | string | Deprecated. Use `name_regex_delete` instead. Regular expression to match container image names.
`container_expiration_policy.name_regex_keep` | string | Regular expression to match container image names to keep.
`container_expiration_policy.next_run_at` | datetime | Timestamp for the next scheduled policy run.
`repository_object_format` | string | Object format used by the repository (sha1 or sha256).
`issues_enabled` | boolean | Whether issues are enabled for the project.
`merge_requests_enabled` | boolean | Whether merge requests are enabled for the project.
`wiki_enabled` | boolean | Whether the wiki is enabled for the project.
`jobs_enabled` | boolean | Whether jobs are enabled for the project.
`snippets_enabled` | boolean | Whether snippets are enabled for the project.
`container_registry_enabled` | boolean | Deprecated. Use `container_registry_access_level` instead. Whether the container registry is enabled.
`service_desk_enabled` | boolean | Whether Service Desk is enabled for the project.
`can_create_merge_request_in` | boolean | Whether the current user can create merge requests in the project.
`issues_access_level` | string | Access level for the issues feature. Possible values: `disabled`, `private`, or `enabled`.
`repository_access_level` | string | Access level for the repository feature. Possible values: `disabled`, `private`, or `enabled`.
`merge_requests_access_level` | string | Access level for the merge requests feature. Possible values: `disabled`, `private`, or `enabled`.
`forking_access_level` | string | Access level for forking the project. Possible values: `disabled`, `private`, or `enabled`.
`wiki_access_level` | string | Access level for the wiki feature. Possible values: `disabled`, `private`, or `enabled`.
`builds_access_level` | string | Access level for the CI/CD builds feature. Possible values: `disabled`, `private`, or `enabled`.
`snippets_access_level` | string | Access level for the snippets feature. Possible values: `disabled`, `private`, or `enabled`.
`pages_access_level` | string | Access level for GitLab Pages. Possible values: `disabled`, `private`, `enabled`, or `public`.
`analytics_access_level` | string | Access level for analytics features. Possible values: `disabled`, `private`, or `enabled`.
`container_registry_access_level` | string | Access level for the container registry. Possible values: `disabled`, `private`, or `enabled`.
`security_and_compliance_access_level` | string | Access level for security and compliance features. Possible values: `disabled`, `private`, or `enabled`.
`releases_access_level` | string | Access level for the releases feature. Possible values: `disabled`, `private`, or `enabled`.
`environments_access_level` | string | Access level for the environments feature. Possible values: `disabled`, `private`, or `enabled`.
`feature_flags_access_level` | string | Access level for the feature flags feature. Possible values: `disabled`, `private`, or `enabled`.
`infrastructure_access_level` | string | Access level for the infrastructure feature. Possible values: `disabled`, `private`, or `enabled`.
`monitor_access_level` | string | Access level for the monitor feature. Possible values: `disabled`, `private`, or `enabled`.
`model_experiments_access_level` | string | Access level for the model experiments feature. Possible values: `disabled`, `private`, or `enabled`.
`model_registry_access_level` | string | Access level for the model registry feature. Possible values: `disabled`, `private`, or `enabled`.
`package_registry_access_level` | string | Access level for the package registry feature. Possible values: `disabled`, `private`, or `enabled`.
`emails_disabled` | boolean | Indicates if emails are disabled for the project.
`emails_enabled` | boolean | Indicates if emails are enabled for the project.
`show_diff_preview_in_email` | boolean | Indicates if diff previews are shown in email notifications.
`shared_runners_enabled` | boolean | Whether shared runners are enabled for the project.
`lfs_enabled` | boolean | Indicates if Git LFS is enabled for the project.
`creator_id` | integer | ID of the user who created the project.
`import_status` | string | Status of the project import.
`open_issues_count` | integer | Number of open issues.
`description_html` | string | Description of the project in HTML format.
`updated_at` | datetime | Timestamp when the project was last updated.
`ci_default_git_depth` | integer | Default Git depth for CI/CD pipelines. Only visible if you have administrator access or the Owner role for the project.
`ci_forward_deployment_enabled` | boolean | Whether forward deployment is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_job_token_scope_enabled` | boolean | Indicates if CI/CD job token scope is enabled. Only visible if you have administrator access or the Owner role for the project.
`ci_separated_caches` | boolean | Whether CI/CD caches are separated by branch. Only visible if you have administrator access or the Owner role for the project.
`ci_allow_fork_pipelines_to_run_in_parent_project` | boolean | Whether fork pipelines can run in the parent project. Only visible if you have administrator access or the Owner role for the project.
`build_git_strategy` | string | Git strategy used for CI/CD builds (fetch or clone). Only visible if you have administrator access or the Owner role for the project.
`keep_latest_artifact` | boolean | Indicates if the latest artifact is kept when a new one is created. Only visible if you have administrator access or the Owner role for the project.
`restrict_user_defined_variables` | boolean | Whether user-defined variables are restricted. Only visible if you have administrator access or the Owner role for the project.
`runners_token` | string | Token for registering runners with the project. Only visible if you have administrator access or the Owner role for the project.
`runner_token_expiration_interval` | integer | Expiration interval in seconds for runner tokens. Only visible if you have administrator access or the Owner role for the project.
`group_runners_enabled` | boolean | Whether group runners are enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`auto_cancel_pending_pipelines` | string | Setting for automatically canceling pending pipelines. Only visible if you have administrator access or the Owner role for the project.
`build_timeout` | integer | Timeout in seconds for CI/CD jobs. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_enabled` | boolean | Whether Auto DevOps is enabled for the project. Only visible if you have administrator access or the Owner role for the project.
`auto_devops_deploy_strategy` | string | Deployment strategy for Auto DevOps. Only visible if you have administrator access or the Owner role for the project.
`ci_config_path` | string | Path to the CI/CD configuration file.
`public_jobs` | boolean | Whether job logs are publicly accessible.
`shared_with_groups` | array of objects | List of groups the project is shared with.
`only_allow_merge_if_pipeline_succeeds` | boolean | Whether merges are allowed only if the pipeline succeeds.
`allow_merge_on_skipped_pipeline` | boolean | Whether merges are allowed when the pipeline is skipped.
`request_access_enabled` | boolean | Whether users can request access to the project.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | Whether merges are allowed only if all discussions are resolved.
`remove_source_branch_after_merge` | boolean | Whether the source branch is automatically removed after merge.
`printing_merge_request_link_enabled` | boolean | Indicates if merge request links are printed after pushing.
`merge_method` | string | Merge method used for the project. Possible values: `merge`, `rebase_merge`, or `ff`.
`merge_request_title_regex` | string | Regex pattern for validating merge request titles.
`merge_request_title_regex_description` | string | Description of the merge request title regex validation.
`squash_option` | string | Squash option for merge requests.
`enforce_auth_checks_on_uploads` | boolean | Whether authentication checks are enforced on uploads.
`suggestion_commit_message` | string | Custom commit message for suggestions.
`merge_commit_template` | string | Template for merge commit messages.
`squash_commit_template` | string | Template for squash commit messages.
`issue_branch_template` | string | Template for branch names created from issues.
`warn_about_potentially_unwanted_characters` | boolean | Whether to warn about potentially unwanted characters.
`autoclose_referenced_issues` | boolean | Whether referenced issues are automatically closed.
`max_artifacts_size` | integer | Maximum size in MB for CI/CD artifacts.
`approvals_before_merge` | integer | Deprecated. Use merge request approvals API instead. Number of approvals required before merge.
`mirror` | boolean | Whether the project is a mirror.
`external_authorization_classification_label` | string | External authorization classification label.
`requirements_enabled` | boolean | Indicates if requirements management is enabled.
`requirements_access_level` | string | Access level for the requirements feature.
`security_and_compliance_enabled` | boolean | Indicates if security and compliance features are enabled.
`compliance_frameworks` | array of strings | Compliance frameworks applied to the project.
`issues_template` | string | Default description for issues. Description is parsed with GitLab Flavored Markdown. Premium and Ultimate only.
`merge_requests_template` | string | Template for merge request descriptions. Premium and Ultimate only.
`merge_pipelines_enabled` | boolean | Indicates if merge pipelines are enabled.
`merge_trains_enabled` | boolean | Indicates if merge trains are enabled.
`merge_trains_skip_train_allowed` | boolean | Indicates if skipping the merge train is allowed.
`only_allow_merge_if_all_status_checks_passed` | boolean | Whether merges are allowed only if all status checks have passed. Ultimate only.
`allow_pipeline_trigger_approve_deployment` | boolean | Whether pipeline triggers can approve deployments.
`prevent_merge_without_jira_issue` | boolean | Indicates if merges require an associated Jira issue.
`duo_remote_flows_enabled` | boolean | Indicates if GitLab Duo remote flows are enabled.
`duo_foundational_flows_enabled` | boolean | Indicates if GitLab Duo foundational flows are enabled.
`duo_sast_fp_detection_enabled` | boolean | Indicates if GitLab Duo SAST false positive detection is enabled.
`spp_repository_pipeline_access` | boolean | Repository pipeline access for security policies. Only visible if the security orchestration policies feature is available.
`permissions` | object | User permissions for the project.
`permissions.project_access` | object | Project access permissions for the user.
`permissions.group_access` | object | Group access permissions for the user.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/5/contributed_projects"
```

Example response:
json
```
[
  {
    "id": 4,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
    "web_url": "http://example.com/diaspora/diaspora-client",
    "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "disapora client"
    ],
    "topics": [
      "example",
      "disapora client"
    ],
    "owner": {
      "id": 3,
      "name": "Diaspora",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Diaspora Client",
    "name_with_namespace": "Diaspora / Diaspora Client",
    "path": "diaspora-client",
    "path_with_namespace": "diaspora/diaspora-client",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    "import_status": "none",
    "archived": false,
    "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 0,
    "runners_token": "b8547b1dc37721d05889db52fa2f02",
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "allow_pipeline_trigger_approve_deployment": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "squash_commit_template": null,
    "secret_push_protection_enabled": false,
    "issue_branch_template": "gitlab/%{id}-%{title}",
    "statistics": {
      "commit_count": 37,
      "storage_size": 1038090,
      "repository_size": 1038090,
      "lfs_objects_size": 0,
      "job_artifacts_size": 0,
      "pipeline_artifacts_size": 0,
      "packages_size": 0,
      "snippets_size": 0,
      "uploads_size": 0,
      "container_registry_size": 0
    },
    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  },
  {
    "id": 6,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "private",
    "ssh_url_to_repo": "git@example.com:brightbox/puppet.git",
    "http_url_to_repo": "http://example.com/brightbox/puppet.git",
    "web_url": "http://example.com/brightbox/puppet",
    "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md",
    "tag_list": [ //deprecated, use `topics` instead
      "example",
      "puppet"
    ],
    "topics": [
      "example",
      "puppet"
    ],
    "owner": {
      "id": 4,
      "name": "Brightbox",
      "created_at": "2013-09-30T13:46:02Z"
    },
    "name": "Puppet",
    "name_with_namespace": "Brightbox / Puppet",
    "path": "puppet",
    "path_with_namespace": "brightbox/puppet",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 4,
      "name": "Brightbox",
      "path": "brightbox",
      "kind": "group",
      "full_path": "brightbox"
    },
    "import_status": "none",
    "import_error": null,
    "permissions": {
      "project_access": {
        "access_level": 10,
        "notification_level": 3
      },
      "group_access": {
        "access_level": 50,
        "notification_level": 3
      }
    },
    "archived": false,
    "avatar_url": null,
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 0,
    "runners_token": "b8547b1dc37721d05889db52fa2f02",
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "allow_pipeline_trigger_approve_deployment": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "auto_devops_enabled": true,
    "auto_devops_deploy_strategy": "continuous",
    "repository_storage": "default",
    "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
    "mirror": false,
    "mirror_user_id": 45,
    "mirror_trigger_builds": false,
    "only_mirror_protected_branches": false,
    "mirror_overwrites_diverged_branches": false,
    "external_authorization_classification_label": null,
    "packages_enabled": true, // deprecated, use package_registry_access_level instead
    "empty_repo": false,
    "package_registry_access_level": "enabled",
    "service_desk_enabled": false,
    "service_desk_address": null,
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "squash_commit_template": null,
    "secret_push_protection_enabled": false,
    "issue_branch_template": "gitlab/%{id}-%{title}",
    "statistics": {
      "commit_count": 12,
      "storage_size": 2066080,
      "repository_size": 2066080,
      "lfs_objects_size": 0,
      "job_artifacts_size": 0,
      "pipeline_artifacts_size": 0,
      "packages_size": 0,
      "snippets_size": 0,
      "uploads_size": 0,
      "container_registry_size": 0
    },
    "container_registry_image_prefix": "registry.example.com/brightbox/puppet",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  }
]
```

## List attributes[](https://docs.gitlab.com/api/projects/#list-attributes "Permalink")
List attributes of a project.
### List all members of a project[](https://docs.gitlab.com/api/projects/#list-all-members-of-a-project "Permalink")
Lists all members with access to a specified project.
```
GET /projects/:id/users
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`search` | string | No | Search for a specific member by their `username` or `name`.
`skip_users` | integer array | No | Filter out members with the specified IDs.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the user.
`username` | string | Username of the user.
`name` | string | Full name of the user.
`state` | string | State of the user account. Possible values: `active` or `blocked`.
`avatar_url` | string | URL of the user’s avatar image.
`web_url` | string | URL to access the user’s profile in a browser.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.com/api/v4/projects/<project_id>/users" \
```

Example response:
json
```
[
  {
    "id": 1,
    "username": "john_smith",
    "name": "John Smith",
    "state": "active",
    "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
    "web_url": "http://localhost:3000/john_smith"
  },
  {
    "id": 2,
    "username": "jack_smith",
    "name": "Jack Smith",
    "state": "blocked",
    "avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
    "web_url": "http://localhost:3000/jack_smith"
  }
]
```

### List all ancestor groups[](https://docs.gitlab.com/api/projects/#list-all-ancestor-groups "Permalink")
Lists all ancestor groups for a specified project.
```
GET /projects/:id/groups
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`search` | string | No | Search for specific groups by group ID.
`shared_min_access_level` | integer | No | Limit to shared groups with at least the specified access level. Possible values: `5` (Minimal access), `10` (Guest), `15` (Planner), `20` (Reporter), `30` (Developer), `40` (Maintainer), or `50` (Owner).
`shared_visible_only` | boolean | No | If `true`, returns only shared groups the authenticated user can access.
`skip_groups` | array of integers | No | Skip the group IDs passed.
`with_shared` | boolean | No | Include projects shared with this group. Default is `false`.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the group.
`name` | string | Name of the group.
`avatar_url` | string | URL of the group’s avatar image.
`web_url` | string | URL to access the group in a browser.
`full_name` | string | Full name of the group.
`full_path` | string | Full path of the group.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/<project_id>/groups"
```

Example response:
json
```
[
  {
    "id": 1,
    "name": "Foobar Group",
    "avatar_url": "http://localhost:3000/uploads/group/avatar/1/foo.jpg",
    "web_url": "http://localhost:3000/groups/foo-bar",
    "full_name": "Foobar Group",
    "full_path": "foo-bar"
  },
  {
    "id": 2,
    "name": "Shared Group",
    "avatar_url": "http://gitlab.example.com/uploads/group/avatar/1/bar.jpg",
    "web_url": "http://gitlab.example.com/groups/foo/bar",
    "full_name": "Shared Group",
    "full_path": "foo/shared"
  }
]
```

### List all groups available to invite to a project[](https://docs.gitlab.com/api/projects/#list-all-groups-available-to-invite-to-a-project "Permalink")
Lists all groups that can be invited to a project.
```
GET /projects/:id/share_locations
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`search` | string | No | Search for specific groups by group ID.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the group.
`web_url` | string | URL to access the group in a browser.
`name` | string | Name of the group.
`avatar_url` | string | URL of the group’s avatar image.
`full_name` | string | Full name of the group.
`full_path` | string | Full path of the group.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/<project_id>/share_locations"
```

Example response:
json
```
[
  {
    "id": 22,
    "web_url": "http://127.0.0.1:3000/groups/gitlab-org",
    "name": "Gitlab Org",
    "avatar_url": null,
    "full_name": "Gitlab Org",
    "full_path": "gitlab-org"
  },
  {
    "id": 25,
    "web_url": "http://127.0.0.1:3000/groups/gnuwget",
    "name": "Gnuwget",
    "avatar_url": null,
    "full_name": "Gnuwget",
    "full_path": "gnuwget"
  }
]
```

### List all invited groups in a project[](https://docs.gitlab.com/api/projects/#list-all-invited-groups-in-a-project "Permalink")
Lists all invited groups in a project. When accessed without authentication, returns only public invited groups. This endpoint is rate-limited to 60 requests per minute per:
  * User for authenticated users
  * IP address for unauthenticated users


This endpoint supports pagination:
  * Use offset-based pagination to access up to 50,000 projects.
  * Use keyset-based pagination to list more than 50,000 projects.


For more information, see [Pagination](https://docs.gitlab.com/api/rest/#pagination).
```
GET /projects/:id/invited_groups
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | yes | The ID or [URL-encoded path](https://docs.gitlab.com/api/rest/#namespaced-paths) of the group.
`search` | string | no | Return the list of authorized groups matching the search criteria.
`min_access_level` | integer | no | Limit to groups where the current user has at least the specified access level. Possible values: `5` (Minimal access), `10` (Guest), `15` (Planner), `20` (Reporter), `30` (Developer), `40` (Maintainer), or `50` (Owner).
`relation` | array of strings | no | Filter the groups by relation. Possible values: `direct` or `inherited`.
`with_custom_attributes` | boolean | no | If `true`, returns [custom attributes](https://docs.gitlab.com/api/custom_attributes/) in response. Requires administrator access.
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and the following response attributes:
Attribute | Type | Description
---|---|---
`id` | integer | ID of the group.
`web_url` | string | URL to access the group in a browser.
`name` | string | Name of the group.
`avatar_url` | string | URL of the group’s avatar image.
`full_name` | string | Full name of the group.
`full_path` | string | Full path of the group.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/<project_id>/invited_groups"
```

Example response:
json
```
[
  {
    "id": 35,
    "web_url": "https://gitlab.example.com/groups/twitter",
    "name": "Twitter",
    "avatar_url": null,
    "full_name": "Twitter",
    "full_path": "twitter"
  }
]
```

### Retrieve programming language usage information[](https://docs.gitlab.com/api/projects/#retrieve-programming-language-usage-information "Permalink")
Retrieves information about all programming languages used in a specified project.
```
GET /projects/:id/languages
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
If successful, returns [`200 OK`](https://docs.gitlab.com/api/rest/troubleshooting/#status-codes) and a list of programming languages and usage percentages.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/languages"
```

Example response:
json
```
{
  "Ruby": 66.69,
  "JavaScript": 22.98,
  "HTML": 7.91,
  "CoffeeScript": 2.42
}
```

## Manage projects[](https://docs.gitlab.com/api/projects/#manage-projects "Permalink")
Manage a project, including creation, deletion, and archival.
### Create a project[](https://docs.gitlab.com/api/projects/#create-a-project "Permalink")
History
  * `operations_access_level` [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/385798) in GitLab 16.0.
  * `model_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/412734) in GitLab 16.7.
  * `packages_enabled` [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10.
  * `package_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 18.5.


Creates a new project owned by the authenticated user.
If your HTTP repository isn’t publicly accessible, add authentication information to the URL `https://username:password@gitlab.company.com/group/project.git`, where `password` is a public access key with the `api` scope enabled.
```
POST /projects
```

Supported general project attributes:
Attribute | Type | Required | Description
---|---|---|---
`name` | string | Yes (if `path` isn’t provided) | The name of the new project. Equals path if not provided.
`path` | string | Yes (if `name` isn’t provided) | Repository name for new project. Generated based on name if not provided (generated as lowercase with dashes). The path must not start or end with a special character and must not contain consecutive special characters.
`allow_merge_on_skipped_pipeline` | boolean | No | Set whether or not merge requests can be merged with skipped jobs.
`approvals_before_merge` | integer | No | How many approvers should approve merge requests by default. To configure approval rules, see [Merge request approvals API](https://docs.gitlab.com/api/merge_request_approvals/). [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/353097) in GitLab 16.0. Premium and Ultimate only.
`auto_cancel_pending_pipelines` | string | No | Auto-cancel pending pipelines. This action toggles between an enabled state and a disabled state; it is not a boolean.
`auto_devops_deploy_strategy` | string | No | Auto Deploy strategy (`continuous`, `manual` or `timed_incremental`).
`auto_devops_enabled` | boolean | No | Enable Auto DevOps for this project.
`autoclose_referenced_issues` | boolean | No | Set whether auto-closing referenced issues on default branch.
`avatar` | mixed | No | Image file for avatar of the project.
`build_git_strategy` | string | No | The Git strategy. Defaults to `fetch`.
`build_timeout` | integer | No | The maximum amount of time, in seconds, that a job can run.
`ci_config_path` | string | No | The path to CI configuration file.
`container_expiration_policy_attributes` | hash | No | Update the image cleanup policy for this project. Accepts: `cadence` (string), `keep_n` (integer), `older_than` (string), `name_regex` (string), `name_regex_delete` (string), `name_regex_keep` (string), `enabled` (boolean). See the [container registry](https://docs.gitlab.com/user/packages/container_registry/reduce_container_registry_storage/#use-the-cleanup-policy-api) documentation for more information on `cadence`, `keep_n` and `older_than` values.
`container_registry_enabled` | boolean | No |  _(Deprecated)_ Enable container registry for this project. Use `container_registry_access_level` instead.
`default_branch` | string | No | The [default branch](https://docs.gitlab.com/user/project/repository/branches/default/) name. Accepts a branch name (for example, `main`) or a fully qualified reference (for example, `refs/heads/main`). If a fully qualified reference is provided, the API strips the `refs/heads/` prefix. Requires `initialize_with_readme` to be `true`.
`description` | string | No | Short project description.
`emails_disabled` | boolean | No |  _(Deprecated)_ Disable email notifications. Use `emails_enabled` instead
`emails_enabled` | boolean | No | Enable email notifications.
`external_authorization_classification_label` | string | No | The classification label for the project. Premium and Ultimate only.
`group_runners_enabled` | boolean | No | Enable group runners for this project.
`group_with_project_templates_id` | integer | No | For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true. Premium and Ultimate only.
`import_url` | string | No | URL to import repository from. When the URL value isn’t empty, you must not set `initialize_with_readme` to `true`. Doing so might result in the [following error](https://gitlab.com/gitlab-org/gitlab/-/issues/360266): `not a git repository`.
`initialize_with_readme` | boolean | No | Whether to create a Git repository with just a `README.md` file. Default is `false`. When this boolean is true, you must not pass `import_url` or other attributes of this endpoint which specify alternative contents for the repository. Doing so might result in the [following error](https://gitlab.com/gitlab-org/gitlab/-/issues/360266): `not a git repository`.
`issues_enabled` | boolean | No |  _(Deprecated)_ Enable issues for this project. Use `issues_access_level` instead.
`jobs_enabled` | boolean | No |  _(Deprecated)_ Enable jobs for this project. Use `builds_access_level` instead.
`lfs_enabled` | boolean | No | Enable LFS.
`merge_method` | string | No | Set the project’s [merge method](https://docs.gitlab.com/user/project/merge_requests/methods/). Can be `merge` (merge commit), `rebase_merge` (merge commit with semi-linear history), or `ff` (fast-forward merge).
`merge_pipelines_enabled` | boolean | No | Enable or disable merged results pipelines.
`merge_requests_enabled` | boolean | No |  _(Deprecated)_ Enable merge requests for this project. Use `merge_requests_access_level` instead.
`merge_trains_enabled` | boolean | No | Enable or disable merge trains.
`merge_trains_skip_train_allowed` | boolean | No | Allows merge train merge requests to be merged without waiting for pipelines to finish.
`mirror_trigger_builds` | boolean | No | Pull mirroring triggers builds. Premium and Ultimate only.
`mirror` | boolean | No | Enables pull mirroring in a project. Premium and Ultimate only.
`namespace_id` | integer | No | Namespace for the new project. Specify a group ID or subgroup ID. If not provided, defaults to the current user’s personal namespace.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | No | Set whether merge requests can only be merged when all the discussions are resolved.
`only_allow_merge_if_all_status_checks_passed` | boolean | No | Indicates that merges of merge requests should be blocked unless all status checks have passed. Defaults to false. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369859) in GitLab 15.5 with feature flag `only_allow_merge_if_all_status_checks_passed` disabled by default. Ultimate only.
`only_allow_merge_if_pipeline_succeeds` | boolean | No | Set whether merge requests can only be merged with successful pipelines. This setting is named [**Pipelines must succeed**](https://docs.gitlab.com/user/project/merge_requests/auto_merge/#require-a-successful-pipeline-for-merge) in the project settings.
`packages_enabled` | boolean | No |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10. Enable or disable packages repository feature. Use `package_registry_access_level` instead.
`package_registry_access_level` | string | No | Enable or disable packages repository feature.
`printing_merge_request_link_enabled` | boolean | No | Show link to create/view merge request when pushing from the command line.
`public_builds` | boolean | No |  _(Deprecated)_ If `true`, jobs can be viewed by non-project members. Use `public_jobs` instead.
`public_jobs` | boolean | No | If `true`, jobs can be viewed by non-project members.
`repository_object_format` | string | No | Repository object format. Defaults to `sha1`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/419887) in GitLab 16.9.
`remove_source_branch_after_merge` | boolean | No | Enable `Delete source branch` option by default for all new merge requests.
`repository_storage` | string | No | Which storage shard the repository is on. _(administrator only)_
`request_access_enabled` | boolean | No | Allow users to request member access.
`resolve_outdated_diff_discussions` | boolean | No | Automatically resolve merge request diffs discussions on lines changed with a push.
`shared_runners_enabled` | boolean | No | Enable instance runners for this project.
`show_default_award_emojis` | boolean | No | Show default emoji reactions.
`snippets_enabled` | boolean | No |  _(Deprecated)_ Enable snippets for this project. Use `snippets_access_level` instead.
`squash_option` | string | No | One of `never`, `always`, `default_on`, or `default_off`.
`tag_list` | array | No | The list of tags for a project; put array of tags, that should be finally assigned to a project. [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/328226) in GitLab 14.0. Use `topics` instead.
`template_name` | string | No | When used without `use_custom_template`, name of a [built-in project template](https://docs.gitlab.com/user/project/#create-a-project-from-a-built-in-template). When used with `use_custom_template`, name of a custom project template.
`template_project_id` | integer | No | When used with `use_custom_template`, project ID of a custom project template. Using a project ID is preferable to using `template_name` because `template_name` can be ambiguous. Premium and Ultimate only.
`topics` | array | No | The list of topics for a project; put array of topics, that should be finally assigned to a project.
`use_custom_template` | boolean | No | Use either custom [instance](https://docs.gitlab.com/administration/custom_project_templates/) or [group](https://docs.gitlab.com/user/group/custom_project_templates/) (with `group_with_project_templates_id`) project template. Premium and Ultimate only.
`visibility` | string | No | See [project visibility level](https://docs.gitlab.com/api/projects/#project-visibility-level).
`warn_about_potentially_unwanted_characters` | boolean | No | Enable warnings about usage of potentially unwanted characters in this project.
`wiki_enabled` | boolean | No |  _(Deprecated)_ Enable wiki for this project. Use `wiki_access_level` instead.
Example request:
shell
```
curl --request POST --header "PRIVATE-TOKEN: <your-token>" \
     --header "Content-Type: application/json" --data '{
        "name": "new_project", "description": "New Project", "path": "new_project",
        "namespace_id": "42", "initialize_with_readme": "true"}' \
     --url "https://gitlab.example.com/api/v4/projects/"
```

To set the visibility level of individual project features, see [Project feature visibility level](https://docs.gitlab.com/api/projects/#project-feature-visibility-level).
### Create a project for a user[](https://docs.gitlab.com/api/projects/#create-a-project-for-a-user "Permalink")
History
  * `operations_access_level` [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/385798) in GitLab 16.0.
  * `model_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/412734) in GitLab 16.7.
  * `packages_enabled` [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10.
  * `package_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 18.5.


Create a project for a user.
Prerequisites:
  * You must be an administrator.


If your HTTP repository isn’t publicly accessible, add authentication information to the URL. For example, `https://username:password@gitlab.company.com/group/project.git` where `password` is a public access key with the `api` scope enabled.
```
POST /projects/user/:user_id
```

Supported general project attributes:
Attribute | Type | Required | Description
---|---|---|---
`name` | string | Yes | The name of the new project.
`user_id` | integer | Yes | The user ID of the project owner.
`allow_merge_on_skipped_pipeline` | boolean | No | Set whether or not merge requests can be merged with skipped jobs.
`approvals_before_merge` | integer | No | How many approvers should approve merge requests by default. [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/353097) in GitLab 16.0. To configure approval rules, see [Merge request approvals API](https://docs.gitlab.com/api/merge_request_approvals/). Premium and Ultimate only.
`auto_cancel_pending_pipelines` | string | No | Auto-cancel pending pipelines. This action toggles between an enabled state and a disabled state; it is not a boolean.
`auto_devops_deploy_strategy` | string | No | Auto Deploy strategy (`continuous`, `manual` or `timed_incremental`).
`auto_devops_enabled` | boolean | No | Enable Auto DevOps for this project.
`autoclose_referenced_issues` | boolean | No | Set whether auto-closing referenced issues on default branch.
`avatar` | mixed | No | Image file for avatar of the project.
`build_git_strategy` | string | No | The Git strategy. Defaults to `fetch`.
`build_timeout` | integer | No | The maximum amount of time, in seconds, that a job can run.
`ci_config_path` | string | No | The path to CI configuration file.
`container_registry_enabled` | boolean | No |  _(Deprecated)_ Enable container registry for this project. Use `container_registry_access_level` instead.
`default_branch` | string | No | The [default branch](https://docs.gitlab.com/user/project/repository/branches/default/) name. Requires `initialize_with_readme` to be `true`.
`description` | string | No | Short project description.
`emails_disabled` | boolean | No |  _(Deprecated)_ Disable email notifications. Use `emails_enabled` instead
`emails_enabled` | boolean | No | Enable email notifications.
`enforce_auth_checks_on_uploads` | boolean | No | Enforce [auth checks](https://docs.gitlab.com/security/user_file_uploads/#enable-authorization-checks-for-all-media-files) on uploads.
`external_authorization_classification_label` | string | No | The classification label for the project. Premium and Ultimate only.
`group_runners_enabled` | boolean | No | Enable group runners for this project.
`group_with_project_templates_id` | integer | No | For group-level custom templates, specifies ID of group from which all the custom project templates are sourced. Leave empty for instance-level templates. Requires `use_custom_template` to be true. Premium and Ultimate only.
`import_url` | string | No | URL to import repository from.
`initialize_with_readme` | boolean | No |  `false` by default.
`issue_branch_template` | string | No | Template used to suggest names for [branches created from issues](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/#from-an-issue). _([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21243) in GitLab 15.6.)_
`issues_enabled` | boolean | No |  _(Deprecated)_ Enable issues for this project. Use `issues_access_level` instead.
`jobs_enabled` | boolean | No |  _(Deprecated)_ Enable jobs for this project. Use `builds_access_level` instead.
`lfs_enabled` | boolean | No | Enable LFS.
`merge_commit_template` | string | No |  [Template](https://docs.gitlab.com/user/project/merge_requests/commit_templates/) used to create merge commit message in merge requests.
`merge_method` | string | No | Set the project’s [merge method](https://docs.gitlab.com/user/project/merge_requests/methods/). Can be `merge` (merge commit), `rebase_merge` (merge commit with semi-linear history), or `ff` (fast-forward merge).
`merge_requests_enabled` | boolean | No |  _(Deprecated)_ Enable merge requests for this project. Use `merge_requests_access_level` instead.
`mirror_trigger_builds` | boolean | No | Pull mirroring triggers builds. Premium and Ultimate only.
`mirror` | boolean | No | Enables pull mirroring in a project. Premium and Ultimate only.
`namespace_id` | integer | No | Namespace for the new project (defaults to the current user’s namespace).
`only_allow_merge_if_all_discussions_are_resolved` | boolean | No | Set whether merge requests can only be merged when all the discussions are resolved.
`only_allow_merge_if_all_status_checks_passed` | boolean | No | Indicates that merges of merge requests should be blocked unless all status checks have passed. Defaults to false. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369859) in GitLab 15.5 with feature flag `only_allow_merge_if_all_status_checks_passed` disabled by default. Ultimate only.
`only_allow_merge_if_pipeline_succeeds` | boolean | No | Set whether merge requests can only be merged with successful jobs.
`packages_enabled` | boolean | No |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10. Enable or disable packages repository feature. Use `package_registry_access_level` instead.
`package_registry_access_level` | string | No | Enable or disable packages repository feature.
`path` | string | No | Custom repository name for new project. By default generated based on name.
`printing_merge_request_link_enabled` | boolean | No | Show link to create/view merge request when pushing from the command line.
`public_builds` | boolean | No |  _(Deprecated)_ If `true`, jobs can be viewed by non-project members. Use `public_jobs` instead.
`public_jobs` | boolean | No | If `true`, jobs can be viewed by non-project members.
`repository_object_format` | string | No | Repository object format. Defaults to `sha1`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/419887) in GitLab 16.9.
`remove_source_branch_after_merge` | boolean | No | Enable `Delete source branch` option by default for all new merge requests.
`repository_storage` | string | No | Which storage shard the repository is on. _(administrators only)_
`request_access_enabled` | boolean | No | Allow users to request member access.
`resolve_outdated_diff_discussions` | boolean | No | Automatically resolve merge request diffs discussions on lines changed with a push.
`shared_runners_enabled` | boolean | No | Enable instance runners for this project.
`show_default_award_emojis` | boolean | No | Show default emoji reactions.
`snippets_enabled` | boolean | No |  _(Deprecated)_ Enable snippets for this project. Use `snippets_access_level` instead.
`squash_commit_template` | string | No |  [Template](https://docs.gitlab.com/user/project/merge_requests/commit_templates/) used to create squash commit message in merge requests.
`squash_option` | string | No | One of `never`, `always`, `default_on`, or `default_off`.
`suggestion_commit_message` | string | No | The commit message used to apply merge request [suggestions](https://docs.gitlab.com/user/project/merge_requests/reviews/suggestions/).
`tag_list` | array | No |  _([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/328226) in GitLab 14.0)_ The list of tags for a project; put array of tags, that should be finally assigned to a project. Use `topics` instead.
`template_name` | string | No | When used without `use_custom_template`, name of a [built-in project template](https://docs.gitlab.com/user/project/#create-a-project-from-a-built-in-template). When used with `use_custom_template`, name of a custom project template.
`topics` | array | No | The list of topics for the project.
`use_custom_template` | boolean | No | Use either custom [instance](https://docs.gitlab.com/administration/custom_project_templates/) or [group](https://docs.gitlab.com/user/group/custom_project_templates/) (with `group_with_project_templates_id`) project template. Premium and Ultimate only.
`visibility` | string | No | See [project visibility level](https://docs.gitlab.com/api/projects/#project-visibility-level).
`warn_about_potentially_unwanted_characters` | boolean | No | Enable warnings about usage of potentially unwanted characters in this project.
`wiki_enabled` | boolean | No |  _(Deprecated)_ Enable wiki for this project. Use `wiki_access_level` instead.
To set the visibility level of individual project features, see [Project feature visibility level](https://docs.gitlab.com/api/projects/#project-feature-visibility-level).
### Edit a project[](https://docs.gitlab.com/api/projects/#edit-a-project "Permalink")
History
  * `operations_access_level` [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/385798) in GitLab 16.0.
  * `model_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/412734) in GitLab 16.7.
  * `packages_enabled` [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10.
  * `package_registry_access_level` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 18.5.
  * `protect_merge_request_pipelines` and `ci_display_pipeline_variables` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/584488) in GitLab 18.10.


Update an existing project.
If your HTTP repository isn’t publicly accessible, add authentication information to the URL `https://username:password@gitlab.company.com/group/project.git`, where `password` is a public access key with the `api` scope enabled.
```
PUT /projects/:id
```

Supported general project attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`allow_merge_on_skipped_pipeline` | boolean | No | Set whether or not merge requests can be merged with skipped jobs.
`allow_pipeline_trigger_approve_deployment` | boolean | No | Set whether or not a pipeline triggerer is allowed to approve deployments. Premium and Ultimate only.
`only_allow_merge_if_all_status_checks_passed` | boolean | No | Indicates that merges of merge requests should be blocked unless all status checks have passed. Defaults to false.

[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/369859) in GitLab 15.5 with feature flag `only_allow_merge_if_all_status_checks_passed` disabled by default. The feature flag was enabled by default in GitLab 15.9. Ultimate only.
`approvals_before_merge` | integer | No | How many approvers should approve merge requests by default. [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/353097) in GitLab 16.0. To configure approval rules, see [Merge request approvals API](https://docs.gitlab.com/api/merge_request_approvals/). Premium and Ultimate only.
`auto_cancel_pending_pipelines` | string | No | Auto-cancel pending pipelines. This action toggles between an enabled state and a disabled state; it is not a boolean.
`auto_devops_deploy_strategy` | string | No | Auto Deploy strategy (`continuous`, `manual`, or `timed_incremental`).
`auto_devops_enabled` | boolean | No | Enable Auto DevOps for this project.
`auto_duo_code_review_enabled` | boolean | No | Enable automatic reviews by GitLab Duo on merge requests. See [GitLab Duo in merge requests](https://docs.gitlab.com/user/project/merge_requests/duo_in_merge_requests/#use-gitlab-duo-to-review-your-code). Ultimate only.
`autoclose_referenced_issues` | boolean | No | Set whether auto-closing referenced issues on default branch.
`avatar` | mixed | No | Image file for avatar of the project.
`build_git_strategy` | string | No | The Git strategy. Defaults to `fetch`.
`build_timeout` | integer | No | The maximum amount of time, in seconds, that a job can run.
`ci_config_path` | string | No | The path to CI configuration file.
`ci_default_git_depth` | integer | No | Default number of revisions for [shallow cloning](https://docs.gitlab.com/ci/pipelines/settings/#limit-the-number-of-changes-fetched-during-clone).
`ci_delete_pipelines_in_seconds` | integer | No | Pipelines older than the configured time are deleted.
`ci_display_pipeline_variables` | boolean | No | Display all manually-defined variables in the pipeline details page after running a pipeline manually.
`ci_forward_deployment_enabled` | boolean | No | Enable or disable [prevent outdated deployment jobs](https://docs.gitlab.com/ci/pipelines/settings/#prevent-outdated-deployment-jobs).
`ci_forward_deployment_rollback_allowed` | boolean | No | Enable or disable [allow job retries for rollback deployments](https://docs.gitlab.com/ci/pipelines/settings/#prevent-outdated-deployment-jobs).
`ci_allow_fork_pipelines_to_run_in_parent_project` | boolean | No | Enable or disable [running pipelines in the parent project for merge requests from forks](https://docs.gitlab.com/ci/pipelines/merge_request_pipelines/#run-pipelines-in-the-parent-project). _([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325189) in GitLab 15.3.)_
`ci_id_token_sub_claim_components` | array | No | Fields included in the `sub` claim of the [ID Token](https://docs.gitlab.com/ci/secrets/id_token_authentication/). Accepts an array starting with `project_path`. The array might also include `ref_type`, `ref`, `environment_protected`, and `deployment_tier`. Defaults to `["project_path", "ref_type", "ref"]`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/477260) in GitLab 17.10. Support for `environment_protected` and `deployment_tier` introduced in GitLab 18.7.
`ci_separated_caches` | boolean | No | Set whether or not caches should be [separated](https://docs.gitlab.com/ci/caching/#cache-key-names) by branch protection status.
`ci_restrict_pipeline_cancellation_role` | string | No | Set the [role required to cancel a pipeline or job](https://docs.gitlab.com/ci/pipelines/settings/#restrict-roles-that-can-cancel-pipelines-or-jobs). One of `developer`, `maintainer`, or `no_one`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/429921) in GitLab 16.8. Premium and Ultimate only.
`ci_pipeline_variables_minimum_override_role` | string | No | You can specify which role can override variables. One of `owner`, `maintainer`, `developer` or `no_one_allowed`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/440338) in GitLab 17.1. In GitLab 17.1 to 17.7, `restrict_user_defined_variables` must be enabled.
`ci_push_repository_for_job_token_allowed` | boolean | No | Enable or disable the ability to push to the project repository using job token. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/389060) in GitLab 17.2.
`container_expiration_policy_attributes` | hash | No | Update the image cleanup policy for this project. Accepts: `cadence` (string), `keep_n` (integer), `older_than` (string), `name_regex` (string), `name_regex_delete` (string), `name_regex_keep` (string), `enabled` (boolean).
`container_registry_enabled` | boolean | No |  _(Deprecated)_ Enable container registry for this project. Use `container_registry_access_level` instead.
`default_branch` | string | No | The [default branch](https://docs.gitlab.com/user/project/repository/branches/default/) name.
`description` | string | No | Short project description.
`duo_remote_flows_enabled` | boolean | No | Determine whether or not [flows](https://docs.gitlab.com/user/duo_agent_platform/flows/) can run in your project.
`emails_disabled` | boolean | No |  _(Deprecated)_ Disable email notifications. Use `emails_enabled` instead
`emails_enabled` | boolean | No | Enable email notifications.
`enforce_auth_checks_on_uploads` | boolean | No | Enforce [auth checks](https://docs.gitlab.com/security/user_file_uploads/#enable-authorization-checks-for-all-media-files) on uploads.
`external_authorization_classification_label` | string | No | The classification label for the project. Premium and Ultimate only.
`group_runners_enabled` | boolean | No | Enable group runners for this project.
`import_url` | string | No | URL the repository was imported from.
`issues_enabled` | boolean | No |  _(Deprecated)_ Enable issues for this project. Use `issues_access_level` instead.
`issues_template` | string | No | Default description for new issues. Formatted as GitLab Flavored Markdown. Premium and Ultimate only.
`merge_requests_template` | string | No | Default description for new merge requests. Formatted as GitLab Flavored Markdown. Premium and Ultimate only.
`jobs_enabled` | boolean | No |  _(Deprecated)_ Enable jobs for this project. Use `builds_access_level` instead.
`keep_latest_artifact` | boolean | No | Disable or enable the ability to keep the latest artifact for this project.
`lfs_enabled` | boolean | No | Enable LFS.
`max_artifacts_size` | integer | No | The maximum file size in megabytes for individual job artifacts.
`merge_commit_template` | string | No |  [Template](https://docs.gitlab.com/user/project/merge_requests/commit_templates/) used to create merge commit message in merge requests.
`merge_method` | string | No | Set the project’s [merge method](https://docs.gitlab.com/user/project/merge_requests/methods/). Can be `merge` (merge commit), `rebase_merge` (merge commit with semi-linear history), or `ff` (fast-forward merge).
`merge_pipelines_enabled` | boolean | No | Enable or disable merged results pipelines.
`merge_requests_enabled` | boolean | No |  _(Deprecated)_ Enable merge requests for this project. Use `merge_requests_access_level` instead.
`merge_trains_enabled` | boolean | No | Enable or disable merge trains.
`merge_trains_skip_train_allowed` | boolean | No | Allows merge train merge requests to be merged without waiting for pipelines to finish.
`mirror_overwrites_diverged_branches` | boolean | No | Pull mirror overwrites diverged branches. Premium and Ultimate only.
`mirror_trigger_builds` | boolean | No | Pull mirroring triggers builds. Premium and Ultimate only.
`mirror_user_id` | integer | No | User responsible for all the activity surrounding a pull mirror event. _(administrators only)_ Premium and Ultimate only.
`mirror` | boolean | No | Enables pull mirroring in a project. Premium and Ultimate only.
`mr_default_target_self` | boolean | No | For forked projects, target merge requests to this project. If `false`, the target is the upstream project.
`name` | string | No | The name of the project.
`only_allow_merge_if_all_discussions_are_resolved` | boolean | No | Set whether merge requests can only be merged when all the discussions are resolved.
`only_allow_merge_if_pipeline_succeeds` | boolean | No | Set whether merge requests can only be merged with successful jobs.
`only_mirror_protected_branches` | boolean | No | Only mirror protected branches. Premium and Ultimate only.
`packages_enabled` | boolean | No |  [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/454759) in GitLab 17.10. Enable or disable packages repository feature. Use `package_registry_access_level` instead.
`package_registry_access_level` | string | No | Enable or disable packages repository feature.
`path` | string | No | Custom repository name for the project. By default generated based on name.
`prevent_merge_without_jira_issue` | boolean | No | Set whether merge requests require an associated issue from Jira. Ultimate only.
`printing_merge_request_link_enabled` | boolean | No | Show link to create/view merge request when pushing from the command line.
`protect_merge_request_pipelines` | boolean | No | Enable or disable [control access to protected variables and runners](https://docs.gitlab.com/ci/pipelines/merge_request_pipelines/#control-access-to-protected-variables-and-runners).
`public_builds` | boolean | No |  _(Deprecated)_ If `true`, jobs can be viewed by non-project members. Use `public_jobs` instead.
`public_jobs` | boolean | No | If `true`, jobs can be viewed by non-project members.
`remove_source_branch_after_merge` | boolean | No | Enable `Delete source branch` option by default for all new merge requests.
`repository_storage` | string | No | Which storage shard the repository is on. _(administrators only)_
`request_access_enabled` | boolean | No | Allow users to request member access.
`resolve_outdated_diff_discussions` | boolean | No | Automatically resolve merge request diffs discussions on lines changed with a push.
`restrict_user_defined_variables` | boolean | No |  _([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/154510) in GitLab 17.7 in favour of `ci_pipeline_variables_minimum_override_role`)_ Allow only users with the Maintainer role to pass user-defined variables when triggering a pipeline. For example when the pipeline is triggered in the UI, with the API, or by a trigger token.
`service_desk_enabled` | boolean | No | Enable or disable Service Desk feature.
`shared_runners_enabled` | boolean | No | Enable instance runners for this project.
`show_default_award_emojis` | boolean | No | Show default emoji reactions.
`snippets_enabled` | boolean | No |  _(Deprecated)_ Enable snippets for this project. Use `snippets_access_level` instead.
`issue_branch_template` | string | No | Template used to suggest names for [branches created from issues](https://docs.gitlab.com/user/project/merge_requests/creating_merge_requests/#from-an-issue). _([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/21243) in GitLab 15.6.)_
`spp_repository_pipeline_access` | boolean | No | Allow users and tokens read-only access to fetch security policy configurations from this project. Required for enforcing security policies in projects that use this project as their security policy source. Ultimate only.
`squash_commit_template` | string | No |  [Template](https://docs.gitlab.com/user/project/merge_requests/commit_templates/) used to create squash commit message in merge requests.
`squash_option` | string | No | One of `never`, `always`, `default_on`, or `default_off`.
`suggestion_commit_message` | string | No | The commit message used to apply merge request suggestions.
`tag_list` | array | No |  _([Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/328226) in GitLab 14.0)_ The list of tags for a project; put array of tags, that should be finally assigned to a project. Use `topics` instead.
`topics` | array | No | The list of topics for the project. This replaces any existing topics that are already added to the project.
`visibility` | string | No | See [project visibility level](https://docs.gitlab.com/api/projects/#project-visibility-level).
`warn_about_potentially_unwanted_characters` | boolean | No | Enable warnings about usage of potentially unwanted characters in this project.
`wiki_enabled` | boolean | No |  _(Deprecated)_ Enable wiki for this project. Use `wiki_access_level` instead.
`web_based_commit_signing_enabled` | boolean | No | Enables web-based commit signing for commits created from the GitLab UI. Available only on GitLab SaaS.
For example, to toggle the setting for [instance runners on a GitLab.com project](https://docs.gitlab.com/ci/runners/):
shell
```
curl --request PUT --header "PRIVATE-TOKEN: <your-token>" \
     --url "https://gitlab.com/api/v4/projects/<your-project-ID>" \
     --data "shared_runners_enabled=true" # to turn off: "shared_runners_enabled=false"
```

To set the visibility level of individual project features, see [Project feature visibility level](https://docs.gitlab.com/api/projects/#project-feature-visibility-level).
### Import members[](https://docs.gitlab.com/api/projects/#import-members "Permalink")
Import members from another project.
If the importing member’s role for the target project is:
  * Maintainer, then members with the Owner role for the source project are imported with the Maintainer role.
  * Owner, then members with the Owner role for the source project are imported with the Owner role.


```
POST /projects/:id/import_project_members/:project_id
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path](https://docs.gitlab.com/api/rest/#namespaced-paths) of the target project to receive the members.
`project_id` | integer or string | Yes | The ID or [URL-encoded path](https://docs.gitlab.com/api/rest/#namespaced-paths) of the source project to import the members from.
Example request:
shell
```
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/import_project_members/32"
```

Returns:
  * `200 OK` on success.
  * `404 Project Not Found` if the target or source project does not exist or cannot be accessed by the requester.
  * `422 Unprocessable Entity` if the import of project members does not complete successfully.


Example responses:
  * When all emails were successfully sent (`200` HTTP status code):
json
```
{  "status":  "success"  }
```

  * When there was any error importing 1 or more members (`200` HTTP status code):
json
```
{
  "status": "error",
  "message": {
               "john_smith": "Some individual error message",
               "jane_smith": "Some individual error message"
             },
  "total_members_count": 3
}
```

  * When there is a system error (`404` and `422` HTTP status codes):


json
```
{  "message":  "Import failed"  }
```

### Archive a project[](https://docs.gitlab.com/api/projects/#archive-a-project "Permalink")
Archive a project.
Prerequisites:
  * You must be an administrator or be assigned the Owner role on the project.


This endpoint is idempotent. Archiving an already-archived project does not change the project.
```
POST /projects/:id/archive
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
Example request:
shell
```
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/archive"
```

Example response:
json
```
{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "owner": {
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13:46:02Z"
  },
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "repository_object_format": "sha1",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora"
  },
  "import_status": "none",
  "import_error": null,
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  },
  "archived": true,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
  "ci_default_git_depth": 50,
  "ci_forward_deployment_enabled": true,
  "ci_forward_deployment_rollback_allowed": true,
  "ci_allow_fork_pipelines_to_run_in_parent_project": true,
  "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
  "ci_separated_caches": true,
  "ci_restrict_pipeline_cancellation_role": "developer",
  "ci_pipeline_variables_minimum_override_role": "maintainer",
  "ci_push_repository_for_job_token_allowed": false,
  "ci_display_pipeline_variables": false,
  "protect_merge_request_pipelines": true,
  "public_jobs": true,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "allow_pipeline_trigger_approve_deployment": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "autoclose_referenced_issues": true,
  "enforce_auth_checks_on_uploads": true,
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "secret_push_protection_enabled": false,
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}
```

### Unarchive a project[](https://docs.gitlab.com/api/projects/#unarchive-a-project "Permalink")
Unarchive a project.
Prerequisites:
  * You must be an administrator or be assigned the Owner role on the project.


This endpoint is idempotent. Unarchiving a project that isn’t archived doesn’t change the project.
```
POST /projects/:id/unarchive
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
Example request:
shell
```
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/unarchive"
```

Example response:
json
```
{
  "id": 3,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "default_branch": "main",
  "visibility": "private",
  "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
  "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
  "web_url": "http://example.com/diaspora/diaspora-project-site",
  "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
  "tag_list": [ //deprecated, use `topics` instead
    "example",
    "disapora project"
  ],
  "topics": [
    "example",
    "disapora project"
  ],
  "owner": {
    "id": 3,
    "name": "Diaspora",
    "created_at": "2013-09-30T13:46:02Z"
  },
  "name": "Diaspora Project Site",
  "name_with_namespace": "Diaspora / Diaspora Project Site",
  "path": "diaspora-project-site",
  "path_with_namespace": "diaspora/diaspora-project-site",
  "repository_object_format": "sha1",
  "issues_enabled": true,
  "open_issues_count": 1,
  "merge_requests_enabled": true,
  "jobs_enabled": true,
  "wiki_enabled": true,
  "snippets_enabled": false,
  "can_create_merge_request_in": true,
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": false, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "disabled",
  "security_and_compliance_access_level": "disabled",
  "created_at": "2013-09-30T13:46:02Z",
  "updated_at": "2013-09-30T13:46:02Z",
  "last_activity_at": "2013-09-30T13:46:02Z",
  "creator_id": 3,
  "namespace": {
    "id": 3,
    "name": "Diaspora",
    "path": "diaspora",
    "kind": "group",
    "full_path": "diaspora"
  },
  "import_status": "none",
  "import_error": null,
  "permissions": {
    "project_access": {
      "access_level": 10,
      "notification_level": 3
    },
    "group_access": {
      "access_level": 50,
      "notification_level": 3
    }
  },
  "archived": false,
  "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
  "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE",
  "license": {
    "key": "lgpl-3.0",
    "name": "GNU Lesser General Public License v3.0",
    "nickname": "GNU LGPLv3",
    "html_url": "http://choosealicense.com/licenses/lgpl-3.0/",
    "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt"
  },
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "forks_count": 0,
  "star_count": 0,
  "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
  "ci_default_git_depth": 50,
  "ci_forward_deployment_enabled": true,
  "ci_forward_deployment_rollback_allowed": true,
  "ci_allow_fork_pipelines_to_run_in_parent_project": true,
  "ci_id_token_sub_claim_components": ["project_path", "ref_type", "ref"],
  "ci_separated_caches": true,
  "ci_restrict_pipeline_cancellation_role": "developer",
  "ci_pipeline_variables_minimum_override_role": "maintainer",
  "ci_push_repository_for_job_token_allowed": false,
  "ci_display_pipeline_variables": false,
  "protect_merge_request_pipelines": true,
  "public_jobs": true,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": false,
  "allow_pipeline_trigger_approve_deployment": false,
  "restrict_user_defined_variables": false,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": false,
  "request_access_enabled": false,
  "merge_method": "merge",
  "squash_option": "default_on",
  "autoclose_referenced_issues": true,
  "enforce_auth_checks_on_uploads": true,
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
  "secret_push_protection_enabled": false,
  "_links": {
    "self": "http://example.com/api/v4/projects",
    "issues": "http://example.com/api/v4/projects/1/issues",
    "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
    "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
    "labels": "http://example.com/api/v4/projects/1/labels",
    "events": "http://example.com/api/v4/projects/1/events",
    "members": "http://example.com/api/v4/projects/1/members",
    "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
  }
}
```

### Delete a project[](https://docs.gitlab.com/api/projects/#delete-a-project "Permalink")
History
  * [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/389557) in GitLab 16.0. Premium and Ultimate only.
  * [Moved](https://gitlab.com/groups/gitlab-org/-/epics/17208) from GitLab Premium to GitLab Free in GitLab 18.0.


Prerequisites:
  * You must be an administrator or have the Owner role for the project.


Marks a project for deletion. Projects are deleted at the end of the retention period:
  * On GitLab.com, projects are retained for 30 days.
  * On GitLab Self-Managed, the retention period is controlled by the [instance settings](https://docs.gitlab.com/administration/settings/visibility_and_access_controls/#deletion-protection).


This endpoint can also immediately delete a project that was previously marked for deletion.
On GitLab.com, after a project is deleted, its data is retained for 30 days, and permanent deletion is not available. If you really need to delete a project immediately on GitLab.com, you can open a [support ticket](https://about.gitlab.com/support/).
```
DELETE /projects/:id
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`full_path` | string | no | Full path of project to use with `permanently_remove`. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/396500) in GitLab 15.11 for Premium and Ultimate only and moved to GitLab Free in 18.0. To find the project path, use `path_with_namespace` from [get single project](https://docs.gitlab.com/api/projects/#retrieve-a-project).
`permanently_remove` | boolean/string | no | Immediately deletes a project if it is marked for deletion. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/396500) in GitLab 15.11 for Premium and Ultimate only and moved to GitLab Free in 18.0. Disabled on GitLab.com and Dedicated.
### Restore a project marked for deletion[](https://docs.gitlab.com/api/projects/#restore-a-project-marked-for-deletion "Permalink")
Restore a project that is marked for deletion.
```
POST /projects/:id/restore
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
### Transfer a project to a new namespace[](https://docs.gitlab.com/api/projects/#transfer-a-project-to-a-new-namespace "Permalink")
Transfer a project to a new namespace.
For information on prerequisites for transferring a project, see [Transfer a project to another namespace](https://docs.gitlab.com/user/project/working_with_projects/#transfer-a-project).
```
PUT /projects/:id/transfer
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`namespace` | integer or string | Yes | The ID or path of the namespace to transfer to project to.
Example request:
shell
```
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/transfer?namespace=14"
```

Example response:
json
```
  {
  "id": 7,
  "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
  "name": "hello-world",
  "name_with_namespace": "cute-cats / hello-world",
  "path": "hello-world",
  "path_with_namespace": "cute-cats/hello-world",
  "created_at": "2020-10-15T16:25:22.415Z",
  "updated_at": "2020-10-15T16:25:22.415Z",
  "default_branch": "main",
  "tag_list": [], //deprecated, use `topics` instead
  "topics": [],
  "ssh_url_to_repo": "git@gitlab.example.com:cute-cats/hello-world.git",
  "http_url_to_repo": "https://gitlab.example.com/cute-cats/hello-world.git",
  "web_url": "https://gitlab.example.com/cute-cats/hello-world",
  "readme_url": "https://gitlab.example.com/cute-cats/hello-world/-/blob/main/README.md",
  "avatar_url": null,
  "forks_count": 0,
  "star_count": 0,
  "last_activity_at": "2020-10-15T16:25:22.415Z",
  "namespace": {
    "id": 18,
    "name": "cute-cats",
    "path": "cute-cats",
    "kind": "group",
    "full_path": "cute-cats",
    "parent_id": null,
    "avatar_url": null,
    "web_url": "https://gitlab.example.com/groups/cute-cats"
  },
  "container_registry_image_prefix": "registry.example.com/cute-cats/hello-world",
  "_links": {
    "self": "https://gitlab.example.com/api/v4/projects/7",
    "issues": "https://gitlab.example.com/api/v4/projects/7/issues",
    "merge_requests": "https://gitlab.example.com/api/v4/projects/7/merge_requests",
    "repo_branches": "https://gitlab.example.com/api/v4/projects/7/repository/branches",
    "labels": "https://gitlab.example.com/api/v4/projects/7/labels",
    "events": "https://gitlab.example.com/api/v4/projects/7/events",
    "members": "https://gitlab.example.com/api/v4/projects/7/members"
  },
  "packages_enabled": true, // deprecated, use package_registry_access_level instead
  "package_registry_access_level": "enabled",
  "empty_repo": false,
  "archived": false,
  "visibility": "private",
  "resolve_outdated_diff_discussions": false,
  "container_registry_enabled": true, // deprecated, use container_registry_access_level instead
  "container_registry_access_level": "enabled",
  "container_expiration_policy": {
    "cadence": "7d",
    "enabled": false,
    "keep_n": null,
    "older_than": null,
    "name_regex": null,
    "name_regex_keep": null,
    "next_run_at": "2020-10-22T16:25:22.746Z"
  },
  "issues_enabled": true,
  "merge_requests_enabled": true,
  "wiki_enabled": true,
  "jobs_enabled": true,
  "snippets_enabled": true,
  "service_desk_enabled": false,
  "service_desk_address": null,
  "can_create_merge_request_in": true,
  "issues_access_level": "enabled",
  "repository_access_level": "enabled",
  "merge_requests_access_level": "enabled",
  "forking_access_level": "enabled",
  "analytics_access_level": "enabled",
  "wiki_access_level": "enabled",
  "builds_access_level": "enabled",
  "snippets_access_level": "enabled",
  "pages_access_level": "enabled",
  "security_and_compliance_access_level": "enabled",
  "emails_disabled": null,
  "emails_enabled": null,
  "shared_runners_enabled": true,
  "group_runners_enabled": true,
  "lfs_enabled": true,
  "creator_id": 2,
  "import_status": "none",
  "open_issues_count": 0,
  "ci_default_git_depth": 50,
  "public_jobs": true,
  "build_timeout": 3600,
  "auto_cancel_pending_pipelines": "enabled",
  "ci_config_path": null,
  "shared_with_groups": [],
  "only_allow_merge_if_pipeline_succeeds": false,
  "allow_merge_on_skipped_pipeline": null,
  "allow_pipeline_trigger_approve_deployment": false,
  "restrict_user_defined_variables": false,
  "request_access_enabled": true,
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "remove_source_branch_after_merge": true,
  "printing_merge_request_link_enabled": true,
  "merge_method": "merge",
  "squash_option": "default_on",
  "suggestion_commit_message": null,
  "merge_commit_template": null,
  "auto_devops_enabled": true,
  "auto_devops_deploy_strategy": "continuous",
  "autoclose_referenced_issues": true,
  "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead.
  "mirror": false,
  "compliance_frameworks": [],
  "warn_about_potentially_unwanted_characters": true,
  "secret_push_protection_enabled": false
}
```

#### List groups available for project transfer[](https://docs.gitlab.com/api/projects/#list-groups-available-for-project-transfer "Permalink")
Retrieve a list of groups to which the user can transfer a project.
```
GET /projects/:id/transfer_locations
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`search` | string | No | The group names to search for.
Example request:
shell
```
curl --url "https://gitlab.example.com/api/v4/projects/1/transfer_locations"
```

Example response:
json
```
[
  {
    "id": 27,
    "web_url": "https://gitlab.example.com/groups/gitlab",
    "name": "GitLab",
    "avatar_url": null,
    "full_name": "GitLab",
    "full_path": "GitLab"
  },
  {
    "id": 31,
    "web_url": "https://gitlab.example.com/groups/foobar",
    "name": "FooBar",
    "avatar_url": null,
    "full_name": "FooBar",
    "full_path": "FooBar"
  }
]
```

### Upload a project avatar[](https://docs.gitlab.com/api/projects/#upload-a-project-avatar "Permalink")
Upload an avatar to the specified project.
```
PUT /projects/:id
```

Prerequisites:
  * You must have the Maintainer or Owner role for the project.
  * Your file must be 200 KB or smaller. The ideal image size is 192 x 192 pixels.
  * The image must be one of the following file types:
    * `.bmp`
    * `.gif`
    * `.ico`
    * `.jpeg`
    * `.png`
    * `.tiff`


Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`avatar` | string | Yes | The file to be uploaded.
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
To upload an avatar from your file system, use the `--form` argument. This causes cURL to post data using the header `Content-Type: multipart/form-data`. The `avatar=` parameter must point to an image file on your file system and be preceded by `@`.
Example request:
shell
```
curl --request PUT \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5" \
  --form "avatar=@dk.png"
```

Example response:
json
```
{
  "avatar_url": "https://gitlab.example.com/uploads/-/system/project/avatar/2/dk.png"
}
```

### Download a project avatar[](https://docs.gitlab.com/api/projects/#download-a-project-avatar "Permalink")
History
  * [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/144039) in GitLab 16.9.


Download a project avatar. You can access this endpoint without authentication if the project is publicly accessible.
```
GET /projects/:id/avatar
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | yes | ID or [URL-encoded path](https://docs.gitlab.com/api/rest/#namespaced-paths) of the project.
Example request:
shell
```
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/4/avatar"
```

### Remove a project avatar[](https://docs.gitlab.com/api/projects/#remove-a-project-avatar "Permalink")
To remove a project avatar, use a blank value for the `avatar` attribute.
Example request:
shell
```
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --data "avatar=" "https://gitlab.example.com/api/v4/projects/5"
```

## Share projects[](https://docs.gitlab.com/api/projects/#share-projects "Permalink")
Share a project with a group.
For more information, see [Invite a group to a project](https://docs.gitlab.com/user/project/members/sharing_projects_groups/#invite-a-group-to-a-project).
### Share a project with a group[](https://docs.gitlab.com/api/projects/#share-a-project-with-a-group "Permalink")
Share a project with a group.
```
POST /projects/:id/share
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`group_access` | integer | Yes | The access level to grant to the group. Possible values: `5` (Minimal access), `10` (Guest), `15` (Planner), `20` (Reporter), `30` (Developer), `40` (Maintainer), or `50` (Owner).
`group_id` | integer | Yes | The ID of the group to share with.
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`expires_at` | string | No | Share expiration date in ISO 8601 format. For example, `2016-09-26`.
### Delete a shared project link in a group[](https://docs.gitlab.com/api/projects/#delete-a-shared-project-link-in-a-group "Permalink")
Unshare the project from the group. Returns `204` and no content on success.
```
DELETE /projects/:id/share/:group_id
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`group_id` | integer | Yes | The ID of the group.
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
Example request:
shell
```
curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/share/17"
```

## Start the housekeeping task for a project[](https://docs.gitlab.com/api/projects/#start-the-housekeeping-task-for-a-project "Permalink")
Start the [housekeeping task](https://docs.gitlab.com/administration/housekeeping/) for a project.
```
POST /projects/:id/housekeeping
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`task` | string | No |  `prune` to trigger manual prune of unreachable objects or `eager` to trigger eager housekeeping.
## Real-time security scan[](https://docs.gitlab.com/api/projects/#real-time-security-scan "Permalink")
  * Tier: Ultimate
  * Offering: GitLab.com
  * Status: Experiment


History
  * [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/479210) in GitLab 17.6. This feature is an [experiment](https://docs.gitlab.com/policy/development_stages_support/).


Returns SAST scan results for a single file in real-time.
```
POST /projects/:id/security_scans/sast/scan
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
Example request:
shell
```
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
 --header "Content-Type: application/json" \
 --data '{
  "file_path":"src/main.c",
  "content":"#include<string.h>\nint main(int argc, char **argv) {\n  char buff[128];\n  strcpy(buff, argv[1]);\n  return 0;\n}\n"
 }' \
 --url "https://gitlab.example.com/api/v4/projects/:id/security_scans/sast/scan"
```

Example response:
json
```
{
  "vulnerabilities": [
    {
      "name": "Insecure string processing function (strcpy)",
      "description": "The `strcpy` family of functions do not provide the ability to limit or check buffer\nsizes before copying to a destination buffer. This can lead to buffer overflows. Consider\nusing more secure alternatives such as `strncpy` and provide the correct limit to the\ndestination buffer and ensure the string is null terminated.\n\nFor more information please see: https://linux.die.net/man/3/strncpy\n\nIf developing for C Runtime Library (CRT), more secure versions of these functions should be\nused, see:\nhttps://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l?view=msvc-170\n",
      "severity": "High",
      "location": {
        "file": "src/main.c",
        "start_line": 5,
        "end_line": 5,
        "start_column": 3,
        "end_column": 23
      }
    }
  ]
}
```

## Download snapshot of a Git repository[](https://docs.gitlab.com/api/projects/#download-snapshot-of-a-git-repository "Permalink")
This endpoint may only be accessed by an administrative user.
Download a snapshot of the project (or wiki, if requested) Git repository. This snapshot is always in uncompressed [tar](https://en.wikipedia.org/wiki/Tar_%28computing%29) format.
If a repository is corrupted to the point where `git clone` doesn’t work, the snapshot may allow some of the data to be retrieved.
```
GET /projects/:id/snapshot
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | The ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
`wiki` | boolean | No | Whether to download the wiki, rather than project, repository.
## Get the path to repository storage[](https://docs.gitlab.com/api/projects/#get-the-path-to-repository-storage "Permalink")
Get the path to repository storage for the specified project. If you’re using Gitaly Cluster (Praefect), see [Praefect-generated replica paths](https://docs.gitlab.com/administration/gitaly/praefect/#praefect-generated-replica-paths) instead.
Available for administrators only.
```
GET /projects/:id/storage
```

Supported attributes:
Attribute | Type | Required | Description
---|---|---|---
`id` | integer or string | Yes | ID or [URL-encoded path of the project](https://docs.gitlab.com/api/rest/#namespaced-paths).
json
```
[
  {
    "project_id": 1,
    "disk_path": "@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b",
    "created_at": "2012-10-12T17:04:47Z",
    "repository_storage": "default"
  }
]
```

## Secret push protection status[](https://docs.gitlab.com/api/projects/#secret-push-protection-status "Permalink")
  * Tier: Ultimate


History
  * [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160960) in GitLab 17.3.
  * [Renamed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186602) from `setPreReceiveSecretDetection` in GitLab 17.11.


If you have the Developer, Maintainer, or Owner role, the following requests could also return the `secret_push_protection_enabled` value. Some of these requests have stricter requirements about roles. Refer to the endpoints previously mentioned for clarification. Use this information to determine whether secret push protection is enabled for a project. To modify the `secret_push_protection_enabled` value, use the [Project Security Settings API](https://docs.gitlab.com/api/project_security_settings/).
  * `GET /projects`
  * `GET /projects/:id`
  * `GET /users/:user_id/projects`
  * `GET /users/:user_id/contributed_projects`
  * `PUT /projects/:project_id/transfer?namespace=:namespace_id`
  * `PUT /projects/:id`
  * `POST /projects`
  * `POST /projects/user/:user_id`
  * `POST /projects/:id/archive`
  * `POST /projects/:id/unarchive`


Example response:
json
```
{
  "id": 1,
  "project_id": 3,
  "secret_push_protection_enabled": true,
  ...
}
```

## Troubleshooting[](https://docs.gitlab.com/api/projects/#troubleshooting "Permalink")
### Unexpected `restrict_user_defined_variables` value in response[](https://docs.gitlab.com/api/projects/#unexpected-restrict_user_defined_variables-value-in-response "Permalink")
If you set conflicting values for `restrict_user_defined_variables` and `ci_pipeline_variables_minimum_override_role`, the response values might differ from what you expect because the `pipeline_variables_minimum_override_role` setting has higher priority.
For example, if you:
  * Set `restrict_user_defined_variables` to `true` and `ci_pipeline_variables_minimum_override_role` to `developer`, the response returns `restrict_user_defined_variables: false`. Setting `ci_pipeline_variables_minimum_override_role` to `developer` takes precedence and variables are not restricted.
  * Set `restrict_user_defined_variables` to `false` and `ci_pipeline_variables_minimum_override_role` to `maintainer`, The response returns `restrict_user_defined_variables: true` because setting `ci_pipeline_variables_minimum_override_role` to `maintainer` takes precedence and variables are restricted.


Was this page helpful?YesNo
Edit this page
  *     * [ Open in Web IDE`.`Quickly and easily edit multiple files. ](https://gitlab.com/-/ide/project/gitlab-org/gitlab/edit/master/-/doc/api/projects.md)
    * [ View page sourceEdit this file only. ](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/api/projects.md)
    * [ Create an issueSuggest improvements. ](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Documentation)


  * [Prerequisites](https://docs.gitlab.com/api/projects/#prerequisites)
  * [Project visibility level](https://docs.gitlab.com/api/projects/#project-visibility-level)
  * [Project feature visibility level](https://docs.gitlab.com/api/projects/#project-feature-visibility-level)
  * [Deprecated attributes](https://docs.gitlab.com/api/projects/#deprecated-attributes)
  * [Retrieve a project](https://docs.gitlab.com/api/projects/#retrieve-a-project)
  * [List projects](https://docs.gitlab.com/api/projects/#list-projects)
  * [List all projects](https://docs.gitlab.com/api/projects/#list-all-projects)
  * [List all personal projects for a user](https://docs.gitlab.com/api/projects/#list-all-personal-projects-for-a-user)
  * [List all projects contributions for a user](https://docs.gitlab.com/api/projects/#list-all-projects-contributions-for-a-user)
  * [List attributes](https://docs.gitlab.com/api/projects/#list-attributes)
  * [List all members of a project](https://docs.gitlab.com/api/projects/#list-all-members-of-a-project)
  * [List all ancestor groups](https://docs.gitlab.com/api/projects/#list-all-ancestor-groups)
  * [List all groups available to invite to a project](https://docs.gitlab.com/api/projects/#list-all-groups-available-to-invite-to-a-project)
  * [List all invited groups in a project](https://docs.gitlab.com/api/projects/#list-all-invited-groups-in-a-project)
  * [Retrieve programming language usage information](https://docs.gitlab.com/api/projects/#retrieve-programming-language-usage-information)
  * [Manage projects](https://docs.gitlab.com/api/projects/#manage-projects)
  * [Create a project](https://docs.gitlab.com/api/projects/#create-a-project)
  * [Create a project for a user](https://docs.gitlab.com/api/projects/#create-a-project-for-a-user)
  * [Edit a project](https://docs.gitlab.com/api/projects/#edit-a-project)
  * [Import members](https://docs.gitlab.com/api/projects/#import-members)
  * [Archive a project](https://docs.gitlab.com/api/projects/#archive-a-project)
  * [Unarchive a project](https://docs.gitlab.com/api/projects/#unarchive-a-project)
  * [Delete a project](https://docs.gitlab.com/api/projects/#delete-a-project)
  * [Restore a project marked for deletion](https://docs.gitlab.com/api/projects/#restore-a-project-marked-for-deletion)
  * [Transfer a project to a new namespace](https://docs.gitlab.com/api/projects/#transfer-a-project-to-a-new-namespace)
  * [List groups available for project transfer](https://docs.gitlab.com/api/projects/#list-groups-available-for-project-transfer)
  * [Upload a project avatar](https://docs.gitlab.com/api/projects/#upload-a-project-avatar)
  * [Download a project avatar](https://docs.gitlab.com/api/projects/#download-a-project-avatar)
  * [Remove a project avatar](https://docs.gitlab.com/api/projects/#remove-a-project-avatar)
  * [Share projects](https://docs.gitlab.com/api/projects/#share-projects)
  * [Share a project with a group](https://docs.gitlab.com/api/projects/#share-a-project-with-a-group)
  * [Delete a shared project link in a group](https://docs.gitlab.com/api/projects/#delete-a-shared-project-link-in-a-group)
  * [Start the housekeeping task for a project](https://docs.gitlab.com/api/projects/#start-the-housekeeping-task-for-a-project)
  * [Real-time security scan](https://docs.gitlab.com/api/projects/#real-time-security-scan)
  * [Download snapshot of a Git repository](https://docs.gitlab.com/api/projects/#download-snapshot-of-a-git-repository)
  * [Get the path to repository storage](https://docs.gitlab.com/api/projects/#get-the-path-to-repository-storage)
  * [Secret push protection status](https://docs.gitlab.com/api/projects/#secret-push-protection-status)
  * [Troubleshooting](https://docs.gitlab.com/api/projects/#troubleshooting)
  * [Unexpected restrict_user_defined_variables value in response](https://docs.gitlab.com/api/projects/#unexpected-restrict_user_defined_variables-value-in-response)


[![GitLab Docs logo](https://docs.gitlab.com/gitlab-logo-footer.svg)](https://docs.gitlab.com/)
  * [Facebook](https://www.facebook.com/gitlab)
  * [LinkedIn](https://www.linkedin.com/company/gitlab-com)
  * [Twitter](https://twitter.com/gitlab)
  * [YouTube](https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg)

[![Creative Commons License](https://docs.gitlab.com/by-sa.svg)](https://creativecommons.org/licenses/by-sa/4.0/)
Company
  * [About GitLab](https://about.gitlab.com/company/)
  * [View pricing](https://about.gitlab.com/pricing/)
  * [Try GitLab for free](https://about.gitlab.com/free-trial/)


Feedback
  * [View page source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/api/projects.md)
  * [Edit in Web IDE](https://gitlab.com/-/ide/project/gitlab-org/gitlab/edit/master/-/doc/api/projects.md)
  * [Contribute to GitLab](https://about.gitlab.com/community/contribute/)
  * [Suggest updates](https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=Documentation)


Help & Community
  * [Get certified](https://university.gitlab.com/pages/certifications)
  * [Get support](https://about.gitlab.com/support/)
  * [Post on the GitLab forum](https://forum.gitlab.com/new-topic?title=topic%20title&body=topic%20body&tags=docs-feedback)


Resources
  * [Terms](https://about.gitlab.com/terms/)
  * [Privacy statement](https://about.gitlab.com/privacy/)
  * [Use of generative AI](https://docs.gitlab.com/legal/use_generative_ai/)
  * [Acceptable use of user licenses](https://docs.gitlab.com/legal/licensing_policy/)
  * Cookie Preferences


![](https://cdn.bizible.com/ipv?_biz_r=&_biz_h=800054037&_biz_u=10503924d6784ad3f2d352558587a67a&_biz_l=https%3A%2F%2Fdocs.gitlab.com%2Fapi%2Fprotected_tags%2F&_biz_t=1772174429090&_biz_i=Protected%20tags%20API%20%7C%20GitLab%20Docs&_biz_n=142&rnd=300355&cdn_o=a&_biz_z=1772174429165)![](https://cdn.bizible.com/ipv?_biz_r=&_biz_h=800054037&_biz_u=10503924d6784ad3f2d352558587a67a&_biz_l=https%3A%2F%2Fdocs.gitlab.com%2Fapi%2Fprojects%2F&_biz_t=1772174429164&_biz_i=Projects%20API%20%7C%20GitLab%20Docs&_biz_n=143&rnd=746812&cdn_o=a&_biz_z=1772174429166)
![Company Logo](https://cdn.cookielaw.org/logos/aa14a5c8-79e3-442a-8177-464ad850b19d/e46c1d0d-1f66-481f-bc06-5427671431da/253e6fee-c4c0-4b60-bc35-79cdae5dda32/gitlab-logo-100.png)
## Privacy Preference Center
## Privacy Preference Center
  * ### Your Privacy
  * ### Strictly Necessary Cookies
  * ### Functionality Cookies
  * ### Performance and Analytics Cookies
  * ### Targeting and Advertising Cookies
  * ### Ad User Data
  * ### Ad Personalization


#### Your Privacy
When you visit any website, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
[Cookie Policy](https://about.gitlab.com/privacy/cookies/)
**User ID:** 42fad8d5-ed56-4786-8d74-3c72635252d2
_This User ID will be used as a unique identifier while storing and accessing your preferences for future._
**Timestamp:** --
#### Strictly Necessary Cookies
Always Active
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, enabling you to securely log into the site, filling in forms, or using the customer checkout. GitLab processes any personal data collected through these cookies on the basis of our legitimate interest.
Cookies Details
#### Functionality Cookies
Functionality Cookies
These cookies enable helpful but non-essential website functions that improve your website experience. By recognizing you when you return to our website, they may, for example, allow us to personalize our content for you or remember your preferences. If you do not allow these cookies then some or all of these services may not function properly. GitLab processes any personal data collected through these cookies on the basis of your consent
Cookies Details
#### Performance and Analytics Cookies
Performance and Analytics Cookies
These cookies allow us and our third-party service providers to recognize and count the number of visitors on our websites and to see how visitors move around our websites when they are using it. This helps us improve our products and ensures that users can easily find what they need on our websites. These cookies usually generate aggregate statistics that are not associated with an individual. To the extent any personal data is collected through these cookies, GitLab processes that data on the basis of your consent.
Cookies Details
#### Targeting and Advertising Cookies
Targeting and Advertising Cookies
These cookies enable different advertising related functions. They may allow us to record information about your visit to our websites, such as pages visited, links followed, and videos viewed so we can make our websites and the advertising displayed on it more relevant to your interests. They may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant advertisements on other websites. GitLab processes any personal data collected through these cookies on the basis of your consent.
Cookies Details
#### Ad User Data
Ad User Data
Sets consent for sending user data to Google for advertising purposes.
Cookies Details
#### Ad Personalization
Ad Personalization
Sets consent for personalized advertising.
Cookies Details
Back Button
### Cookie List
Filter Button
Consent Leg.Interest
checkbox label label
checkbox label label
checkbox label label
Clear
  * checkbox label label


Apply Cancel
Confirm My Choices
Allow All
[![Powered by Onetrust](https://cdn.cookielaw.org/logos/static/powered_by_logo.svg)](https://www.onetrust.com/products/cookie-consent/)
