项目标星 API

使用此 API 与已标星的项目进行交互。有关更多信息,请参阅 projects and stars

列出用户标星的项目#

获取指定用户标星的可见项目列表。在没有身份验证的情况下访问时,仅返回公共项目。

plaintext
GET /users/:user_id/starred_projects

支持的属性:

属性类型是否必需描述
user_idstring用户的 ID 或用户名。
archivedboolean限制按已存档状态。
membershipboolean限制为当前用户是其成员的项目。
min_access_levelinteger限制为当前用户最低 角色 (access_level)
order_bystring返回按 idnamepathcreated_atupdated_atstar_countlast_activity_at 字段排序的项目。默认是 created_at
ownedboolean限制为当前用户明确拥有的项目。
searchstring返回符合搜索条件的项目列表。
simpleboolean仅返回每个项目的有限字段。没有身份验证,此操作无效;仅返回简单字段。
sortstring返回按 ascdesc 顺序排序的项目。默认是 desc
starredboolean限制为当前用户标星的项目。
statisticsboolean包括项目统计信息。仅对拥有至少报告者角色的用户可用。
updated_afterdatetime限制结果为在指定时间之后最后更新的项目。格式:ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)。在 极狐GitLab 15.10 中引入。
updated_beforedatetime限制结果为在指定时间之前最后更新的项目。格式:ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)。在 极狐GitLab 15.10 中引入。
visibilitystring限制按可见性 publicinternalprivate
with_custom_attributesboolean在响应中包括自定义属性(仅管理员)
with_issues_enabledboolean限制为启用议题功能的项目。
with_merge_requests_enabledboolean限制为启用合并请求功能的项目。

示例请求:

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

示例响应:

json
1[ 2 { 3 "id": 4, 4 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", 5 "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>", 6 "default_branch": "main", 7 "visibility": "private", 8 "ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git", 9 "http_url_to_repo": "http://example.com/diaspora/diaspora-client.git", 10 "web_url": "http://example.com/diaspora/diaspora-client", 11 "readme_url": "http://example.com/diaspora/diaspora-client/blob/main/README.md", 12 "tag_list": [ //deprecated, use `topics` instead 13 "example", 14 "disapora client" 15 ], 16 "topics": [ 17 "example", 18 "disapora client" 19 ], 20 "owner": { 21 "id": 3, 22 "name": "Diaspora", 23 "created_at": "2013-09-30T13:46:02Z" 24 }, 25 "name": "Diaspora Client", 26 "name_with_namespace": "Diaspora / Diaspora Client", 27 "path": "diaspora-client", 28 "path_with_namespace": "diaspora/diaspora-client", 29 "issues_enabled": true, 30 "open_issues_count": 1, 31 "merge_requests_enabled": true, 32 "jobs_enabled": true, 33 "wiki_enabled": true, 34 "snippets_enabled": false, 35 "can_create_merge_request_in": true, 36 "resolve_outdated_diff_discussions": false, 37 "container_registry_enabled": false, // deprecated, use container_registry_access_level instead 38 "container_registry_access_level": "disabled", 39 "security_and_compliance_access_level": "disabled", 40 "created_at": "2013-09-30T13:46:02Z", 41 "updated_at": "2013-09-30T13:46:02Z", 42 "last_activity_at": "2013-09-30T13:46:02Z", 43 "creator_id": 3, 44 "namespace": { 45 "id": 3, 46 "name": "Diaspora", 47 "path": "diaspora", 48 "kind": "group", 49 "full_path": "diaspora" 50 }, 51 "import_status": "none", 52 "archived": false, 53 "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png", 54 "shared_runners_enabled": true, 55 "group_runners_enabled": true, 56 "forks_count": 0, 57 "star_count": 0, 58 "runners_token": "<token>", 59 "public_jobs": true, 60 "shared_with_groups": [], 61 "only_allow_merge_if_pipeline_succeeds": false, 62 "allow_merge_on_skipped_pipeline": false, 63 "restrict_user_defined_variables": false, 64 "only_allow_merge_if_all_discussions_are_resolved": false, 65 "remove_source_branch_after_merge": false, 66 "request_access_enabled": false, 67 "merge_method": "merge", 68 "squash_option": "default_on", 69 "autoclose_referenced_issues": true, 70 "enforce_auth_checks_on_uploads": true, 71 "suggestion_commit_message": null, 72 "merge_commit_template": null, 73 "squash_commit_template": null, 74 "issue_branch_template": "gitlab/%{id}-%{title}", 75 "statistics": { 76 "commit_count": 37, 77 "storage_size": 1038090, 78 "repository_size": 1038090, 79 "lfs_objects_size": 0, 80 "job_artifacts_size": 0, 81 "pipeline_artifacts_size": 0, 82 "packages_size": 0, 83 "snippets_size": 0, 84 "uploads_size": 0, 85 "container_registry_size": 0 86 }, 87 "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-client", 88 "_links": { 89 "self": "http://example.com/api/v4/projects", 90 "issues": "http://example.com/api/v4/projects/1/issues", 91 "merge_requests": "http://example.com/api/v4/projects/1/merge_requests", 92 "repo_branches": "http://example.com/api/v4/projects/1/repository_branches", 93 "labels": "http://example.com/api/v4/projects/1/labels", 94 "events": "http://example.com/api/v4/projects/1/events", 95 "members": "http://example.com/api/v4/projects/1/members", 96 "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents" 97 } 98 }, 99 { 100 "id": 6, 101 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", 102 "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>", 103 "default_branch": "main", 104 "visibility": "private", 105 "ssh_url_to_repo": "git@example.com:brightbox/puppet.git", 106 "http_url_to_repo": "http://example.com/brightbox/puppet.git", 107 "web_url": "http://example.com/brightbox/puppet", 108 "readme_url": "http://example.com/brightbox/puppet/blob/main/README.md", 109 "tag_list": [ //deprecated, use `topics` instead 110 "example", 111 "puppet" 112 ], 113 "topics": [ 114 "example", 115 "puppet" 116 ], 117 "owner": { 118 "id": 4, 119 "name": "Brightbox", 120 "created_at": "2013-09-30T13:46:02Z" 121 }, 122 "name": "Puppet", 123 "name_with_namespace": "Brightbox / Puppet", 124 "path": "puppet", 125 "path_with_namespace": "brightbox/puppet", 126 "issues_enabled": true, 127 "open_issues_count": 1, 128 "merge_requests_enabled": true, 129 "jobs_enabled": true, 130 "wiki_enabled": true, 131 "snippets_enabled": false, 132 "can_create_merge_request_in": true, 133 "resolve_outdated_diff_discussions": false, 134 "container_registry_enabled": false, // deprecated, use container_registry_access_level instead 135 "container_registry_access_level": "disabled", 136 "security_and_compliance_access_level": "disabled", 137 "created_at": "2013-09-30T13:46:02Z", 138 "updated_at": "2013-09-30T13:46:02Z", 139 "last_activity_at": "2013-09-30T13:46:02Z", 140 "creator_id": 3, 141 "namespace": { 142 "id": 4, 143 "name": "Brightbox", 144 "path": "brightbox", 145 "kind": "group", 146 "full_path": "brightbox" 147 }, 148 "import_status": "none", 149 "import_error": null, 150 "permissions": { 151 "project_access": { 152 "access_level": 10, 153 "notification_level": 3 154 }, 155 "group_access": { 156 "access_level": 50, 157 "notification_level": 3 158 } 159 }, 160 "archived": false, 161 "avatar_url": null, 162 "shared_runners_enabled": true, 163 "group_runners_enabled": true, 164 "forks_count": 0, 165 "star_count": 0, 166 "runners_token": "<token>", 167 "public_jobs": true, 168 "shared_with_groups": [], 169 "only_allow_merge_if_pipeline_succeeds": false, 170 "allow_merge_on_skipped_pipeline": false, 171 "restrict_user_defined_variables": false, 172 "only_allow_merge_if_all_discussions_are_resolved": false, 173 "remove_source_branch_after_merge": false, 174 "request_access_enabled": false, 175 "merge_method": "merge", 176 "squash_option": "default_on", 177 "auto_devops_enabled": true, 178 "auto_devops_deploy_strategy": "continuous", 179 "repository_storage": "default", 180 "approvals_before_merge": 0, // Deprecated. Use merge request approvals API instead. 181 "mirror": false, 182 "mirror_user_id": 45, 183 "mirror_trigger_builds": false, 184 "only_mirror_protected_branches": false, 185 "mirror_overwrites_diverged_branches": false, 186 "external_authorization_classification_label": null, 187 "packages_enabled": true, 188 "service_desk_enabled": false, 189 "service_desk_address": null, 190 "autoclose_referenced_issues": true, 191 "enforce_auth_checks_on_uploads": true, 192 "suggestion_commit_message": null, 193 "merge_commit_template": null, 194 "squash_commit_template": null, 195 "issue_branch_template": "gitlab/%{id}-%{title}", 196 "statistics": { 197 "commit_count": 12, 198 "storage_size": 2066080, 199 "repository_size": 2066080, 200 "lfs_objects_size": 0, 201 "job_artifacts_size": 0, 202 "pipeline_artifacts_size": 0, 203 "packages_size": 0, 204 "snippets_size": 0, 205 "uploads_size": 0, 206 "container_registry_size": 0 207 }, 208 "container_registry_image_prefix": "registry.example.com/brightbox/puppet", 209 "_links": { 210 "self": "http://example.com/api/v4/projects", 211 "issues": "http://example.com/api/v4/projects/1/issues", 212 "merge_requests": "http://example.com/api/v4/projects/1/merge_requests", 213 "repo_branches": "http://example.com/api/v4/projects/1/repository_branches", 214 "labels": "http://example.com/api/v4/projects/1/labels", 215 "events": "http://example.com/api/v4/projects/1/events", 216 "members": "http://example.com/api/v4/projects/1/members", 217 "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents" 218 } 219 } 220]

列出标星项目的用户#

列出标星项目的用户。

plaintext
GET /projects/:id/starrers

支持的属性:

属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径
searchstring搜索特定用户。

示例请求:

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

示例响应:

json
1[ 2 { 3 "starred_since": "2019-01-28T14:47:30.642Z", 4 "user": { 5 "id": 1, 6 "username": "jane_smith", 7 "name": "Jane Smith", 8 "state": "active", 9 "avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg", 10 "web_url": "http://localhost:3000/jane_smith" 11 } 12 }, 13 { 14 "starred_since": "2018-01-02T11:40:26.570Z", 15 "user": { 16 "id": 2, 17 "username": "janine_smith", 18 "name": "Janine Smith", 19 "state": "blocked", 20 "avatar_url": "http://gravatar.com/../e32131cd8.jpeg", 21 "web_url": "http://localhost:3000/janine_smith" 22 } 23 } 24]

标星项目#

标星项目。

plaintext
POST /projects/:id/star

支持的属性:

属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径

示例请求:

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

示例响应:

json
1{ 2 "id": 3, 3 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", 4 "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>", 5 "default_branch": "main", 6 "visibility": "internal", 7 "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git", 8 "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git", 9 "web_url": "http://example.com/diaspora/diaspora-project-site", 10 "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md", 11 "tag_list": [ //deprecated, use `topics` instead 12 "example", 13 "disapora project" 14 ], 15 "topics": [ 16 "example", 17 "disapora project" 18 ], 19 "name": "Diaspora Project Site", 20 "name_with_namespace": "Diaspora / Diaspora Project Site", 21 "path": "diaspora-project-site", 22 "path_with_namespace": "diaspora/diaspora-project-site", 23 "repository_object_format": "sha1", 24 "issues_enabled": true, 25 "open_issues_count": 1, 26 "merge_requests_enabled": true, 27 "jobs_enabled": true, 28 "wiki_enabled": true, 29 "snippets_enabled": false, 30 "can_create_merge_request_in": true, 31 "resolve_outdated_diff_discussions": false, 32 "container_registry_enabled": false, // deprecated, use container_registry_access_level instead 33 "container_registry_access_level": "disabled", 34 "security_and_compliance_access_level": "disabled", 35 "created_at": "2013-09-30T13:46:02Z", 36 "updated_at": "2013-09-30T13:46:02Z", 37 "last_activity_at": "2013-09-30T13:46:02Z", 38 "creator_id": 3, 39 "namespace": { 40 "id": 3, 41 "name": "Diaspora", 42 "path": "diaspora", 43 "kind": "group", 44 "full_path": "diaspora" 45 }, 46 "import_status": "none", 47 "archived": true, 48 "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", 49 "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE", 50 "license": { 51 "key": "lgpl-3.0", 52 "name": "GNU Lesser General Public License v3.0", 53 "nickname": "GNU LGPLv3", 54 "html_url": "http://choosealicense.com/licenses/lgpl-3.0/", 55 "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt" 56 }, 57 "shared_runners_enabled": true, 58 "group_runners_enabled": true, 59 "forks_count": 0, 60 "star_count": 1, 61 "public_jobs": true, 62 "shared_with_groups": [], 63 "only_allow_merge_if_pipeline_succeeds": false, 64 "allow_merge_on_skipped_pipeline": false, 65 "restrict_user_defined_variables": false, 66 "only_allow_merge_if_all_discussions_are_resolved": false, 67 "remove_source_branch_after_merge": false, 68 "request_access_enabled": false, 69 "merge_method": "merge", 70 "squash_option": "default_on", 71 "autoclose_referenced_issues": true, 72 "enforce_auth_checks_on_uploads": true, 73 "suggestion_commit_message": null, 74 "merge_commit_template": null, 75 "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site", 76 "_links": { 77 "self": "http://example.com/api/v4/projects", 78 "issues": "http://example.com/api/v4/projects/1/issues", 79 "merge_requests": "http://example.com/api/v4/projects/1/merge_requests", 80 "repo_branches": "http://example.com/api/v4/projects/1/repository_branches", 81 "labels": "http://example.com/api/v4/projects/1/labels", 82 "events": "http://example.com/api/v4/projects/1/events", 83 "members": "http://example.com/api/v4/projects/1/members", 84 "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents" 85 } 86}

取消标星项目#

取消标星项目。

plaintext
POST /projects/:id/unstar

支持的属性:

属性类型是否必需描述
idinteger 或 string项目的 ID 或 URL 编码路径

示例请求:

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

示例响应:

json
1{ 2 "id": 3, 3 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", 4 "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>", 5 "default_branch": "main", 6 "visibility": "internal", 7 "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git", 8 "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git", 9 "web_url": "http://example.com/diaspora/diaspora-project-site", 10 "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md", 11 "tag_list": [ //deprecated, use `topics` instead 12 "example", 13 "disapora project" 14 ], 15 "topics": [ 16 "example", 17 "disapora project" 18 ], 19 "name": "Diaspora Project Site", 20 "name_with_namespace": "Diaspora / Diaspora Project Site", 21 "path": "diaspora-project-site", 22 "path_with_namespace": "diaspora/diaspora-project-site", 23 "repository_object_format": "sha1", 24 "issues_enabled": true, 25 "open_issues_count": 1, 26 "merge_requests_enabled": true, 27 "jobs_enabled": true, 28 "wiki_enabled": true, 29 "snippets_enabled": false, 30 "can_create_merge_request_in": true, 31 "resolve_outdated_diff_discussions": false, 32 "container_registry_enabled": false, // deprecated, use container_registry_access_level instead 33 "container_registry_access_level": "disabled", 34 "security_and_compliance_access_level": "disabled", 35 "created_at": "2013-09-30T13:46:02Z", 36 "updated_at": "2013-09-30T13:46:02Z", 37 "last_activity_at": "2013-09-30T13:46:02Z", 38 "creator_id": 3, 39 "namespace": { 40 "id": 3, 41 "name": "Diaspora", 42 "path": "diaspora", 43 "kind": "group", 44 "full_path": "diaspora" 45 }, 46 "import_status": "none", 47 "archived": true, 48 "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", 49 "license_url": "http://example.com/diaspora/diaspora-client/blob/main/LICENSE", 50 "license": { 51 "key": "lgpl-3.0", 52 "name": "GNU Lesser General Public License v3.0", 53 "nickname": "GNU LGPLv3", 54 "html_url": "http://choosealicense.com/licenses/lgpl-3.0/", 55 "source_url": "http://www.gnu.org/licenses/lgpl-3.0.txt" 56 }, 57 "shared_runners_enabled": true, 58 "group_runners_enabled": true, 59 "forks_count": 0, 60 "star_count": 0, 61 "public_jobs": true, 62 "shared_with_groups": [], 63 "only_allow_merge_if_pipeline_succeeds": false, 64 "allow_merge_on_skipped_pipeline": false, 65 "restrict_user_defined_variables": false, 66 "only_allow_merge_if_all_discussions_are_resolved": false, 67 "remove_source_branch_after_merge": false, 68 "request_access_enabled": false, 69 "merge_method": "merge", 70 "squash_option": "default_on", 71 "autoclose_referenced_issues": true, 72 "enforce_auth_checks_on_uploads": true, 73 "suggestion_commit_message": null, 74 "merge_commit_template": null, 75 "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site", 76 "_links": { 77 "self": "http://example.com/api/v4/projects", 78 "issues": "http://example.com/api/v4/projects/1/issues", 79 "merge_requests": "http://example.com/api/v4/projects/1/merge_requests", 80 "repo_branches": "http://example.com/api/v4/projects/1/repository_branches", 81 "labels": "http://example.com/api/v4/projects/1/labels", 82 "events": "http://example.com/api/v4/projects/1/events", 83 "members": "http://example.com/api/v4/projects/1/members", 84 "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents" 85 } 86}

返回状态码 304,如果项目未被标星。