Project starring API

You can get information aboutprojects and starsby using the REST API.

List projects starred by a user

Get a list of visible projects starred by the given user. When accessed without authentication, only public projects are returned.

GET /users/:user_id/starred_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.
membership boolean No Limit by projects that the current user is a member of.
min_access_level integer No Limit by current user minimalrole (access_level).
order_by string No Return projects ordered byid,name,path,created_at,updated_at,star_count,orlast_activity_atfields. Default iscreated_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 Return only limited fields for each project. Without authentication, this operation is a no-op; only simple fields are returned.
sort string No Return projects sorted inascordescorder. Default isdesc.
starred boolean No Limit by projects starred by the current user.
statistics boolean No Include project statistics. Available only to users with at least the Reporter role.
updated_after datetime No Limit results to projects last updated after the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ).Introducedin GitLab 15.10.
updated_before datetime No Limit results to projects last updated before the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ).Introducedin GitLab 15.10.
visibility string No Limit by visibilitypublic,internal,orprivate.
with_custom_attributes boolean No Includecustom attributesin 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.

Example request:

curl--header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/users/5/starred_projects"

Example response:

[
{
"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":"[email protected]: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,usecontainer_registry_access_levelinstead
"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":"<token>",
"public_jobs":true,
"shared_with_groups":[],
"only_allow_merge_if_pipeline_succeeds":false,
"allow_merge_on_skipped_pipeline":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,
"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":"[email protected]: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,usecontainer_registry_access_levelinstead
"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":"<token>",
"public_jobs":true,
"shared_with_groups":[],
"only_allow_merge_if_pipeline_succeeds":false,
"allow_merge_on_skipped_pipeline":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.UsemergerequestapprovalsAPIinstead.
"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,
"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,
"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 users who starred a project

List the users who starred a project.

GET /projects/:id/starrers

Supported attributes:

Attribute Type Required Description
id integer or string Yes The ID orURL-encoded path of the project.
search string No Search for specific users.

Example request:

curl--header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/projects/5/starrers"

Example responses:

[
{
"starred_since":"2019-01-28T14:47:30.642Z",
"user":{
"id":1,
"username":"jane_smith",
"name":"Jane Smith",
"state":"active",
"avatar_url":"http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
"web_url":"http://localhost:3000/jane_smith"
}
},
{
"starred_since":"2018-01-02T11:40:26.570Z",
"user":{
"id":2,
"username":"janine_smith",
"name":"Janine Smith",
"state":"blocked",
"avatar_url":"http://gravatar.com/../e32131cd8.jpeg",
"web_url":"http://localhost:3000/janine_smith"
}
}
]

Star a project

Star a project.

POST /projects/:id/star

Supported attributes:

Attribute Type Required Description
id integer or string Yes The ID orURL-encoded path of the project.

Example request:

curl--requestPOST--header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/projects/5/star"

Example response:

{
"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":"internal",
"ssh_url_to_repo":"[email protected]: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"
],
"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,usecontainer_registry_access_levelinstead
"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":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":1,
"public_jobs":true,
"shared_with_groups":[],
"only_allow_merge_if_pipeline_succeeds":false,
"allow_merge_on_skipped_pipeline":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",
"_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"
}
}

Unstar a project

Unstar a project.

POST /projects/:id/unstar

Supported attributes:

Attribute Type Required Description
id integer or string Yes The ID orURL-encoded path of the project.

Example request:

curl--requestPOST--header"PRIVATE-TOKEN: <your_access_token>""https://gitlab.example.com/api/v4/projects/5/unstar"

Example response:

{
"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":"internal",
"ssh_url_to_repo":"[email protected]: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"
],
"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,usecontainer_registry_access_levelinstead
"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":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,
"public_jobs":true,
"shared_with_groups":[],
"only_allow_merge_if_pipeline_succeeds":false,
"allow_merge_on_skipped_pipeline":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",
"_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"
}
}

Returns status code304if the project is not starred.