跳至主要内容
REST API 现在已版本化。 有关更多信息,请参阅 "关于 API 版本控制."

协作者的 REST API 端点

使用 REST API 管理仓库的协作者。

列出仓库协作者

对于组织拥有的仓库,协作者列表包括外部协作者、作为直接协作者的组织成员、通过团队成员资格获得访问权限的组织成员、通过默认组织权限获得访问权限的组织成员以及组织所有者。组织成员对组织拥有的仓库具有写入、维护或管理员权限,可以使用此端点。

团队成员将包括子团队的成员。

经过身份验证的用户必须对仓库具有推送访问权限才能使用此端点。

OAuth 应用程序令牌和个人访问令牌(经典)需要 read:orgrepo 范围才能使用此端点。

用于“列出仓库协作者”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “元数据”仓库权限(读取)

“列出仓库协作者”的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必需

仓库的帐户所有者。名称不区分大小写。

repo string 必需

仓库的名称,不包括 .git 扩展名。名称不区分大小写。

查询参数
名称、类型、描述
affiliation string

根据其关联性过滤返回的协作者。outside 表示组织拥有的仓库的所有外部协作者。direct 表示对组织拥有的仓库具有权限的所有协作者,无论其组织成员资格状态如何。all 表示经过身份验证的用户可以看到的所有协作者。

默认: all

可以是以下之一: outside, direct, all

permission string

根据协作者在仓库上的权限过滤协作者。如果未指定,将返回所有协作者。

可以是以下之一:: pull, triage, push, maintain, admin

per_page 整数

每页结果数(最大 100)。有关更多信息,请参阅“在 REST API 中使用分页”。

默认值: 30

page 整数

要获取的结果页码。有关更多信息,请参阅“在 REST API 中使用分页”。

默认值: 1

“列出仓库合作者”的 HTTP 响应状态码

状态码描述
200

OK

404

资源未找到

“列出仓库合作者”的代码示例

请求示例

get/repos/{owner}/{repo}/collaborators
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/collaborators

响应

状态:200
[ { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false, "permissions": { "pull": true, "triage": true, "push": true, "maintain": false, "admin": false }, "role_name": "write" } ]

检查用户是否为仓库合作者

对于组织拥有的仓库,合作者列表包括外部合作者、作为直接合作者的组织成员、通过团队成员资格获得访问权限的组织成员、通过默认组织权限获得访问权限的组织成员以及组织所有者。

团队成员将包括子团队的成员。

经过身份验证的用户必须对仓库具有推送访问权限才能使用此端点。

OAuth 应用程序令牌和个人访问令牌(经典)需要 read:orgrepo 范围才能使用此端点。

“检查用户是否为仓库合作者”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “元数据”仓库权限(读取)

“检查用户是否为仓库合作者”的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必需

仓库的帐户所有者。名称不区分大小写。

repo string 必需

仓库的名称,不包括 .git 扩展名。名称不区分大小写。

username 字符串 必需

GitHub 用户帐户的用户名。

“检查用户是否为仓库合作者”的 HTTP 响应状态码

状态码描述
204

如果用户是合作者,则返回响应

404

如果用户不是合作者,则返回“未找到”

“检查用户是否为仓库合作者”的代码示例

请求示例

get/repos/{owner}/{repo}/collaborators/{username}
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/collaborators/USERNAME

如果用户是合作者,则返回响应

状态:204

添加仓库合作者

此端点会触发 通知。使用此端点过快地创建内容可能会导致二级速率限制。有关更多信息,请参阅“API 速率限制”和“使用 REST API 的最佳实践”。

企业管理员可能会限制添加外部合作者。有关更多信息,请参阅“在企业中执行仓库管理策略”。

有关权限级别的更多信息,请参阅“组织拥有的仓库的权限级别”。当组织基础角色存在时,对组织成员可以授予哪些权限存在限制。在这种情况下,授予的权限必须等于或高于组织基础权限。否则,请求将失败,并显示

Cannot assign {member} permission of {role name}

请注意,如果您选择不传递任何参数,则在调用此端点时需要将 Content-Length 设置为零。有关更多信息,请参阅“HTTP 方法”。

受邀者将收到一条通知,告知他们已受邀加入仓库,他们必须接受或拒绝邀请。他们可以通过通知页面、收到的电子邮件或使用 API 来执行此操作。

更新现有合作者的权限级别

该端点也可以用于更改现有协作者的权限,而无需先删除并重新添加协作者。要更改权限,请使用相同的端点并传递不同的permission参数。响应将是204,没有其他指示权限级别已更改。

速率限制

您每天最多可以向一个仓库发送 50 个邀请。请注意,如果您邀请组织成员加入组织仓库,则没有限制。

用于“添加仓库协作者”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “管理”仓库权限(写入)

用于“添加仓库协作者”的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必需

仓库的帐户所有者。名称不区分大小写。

repo string 必需

仓库的名称,不包括 .git 扩展名。名称不区分大小写。

username 字符串 必需

GitHub 用户帐户的用户名。

主体参数
名称、类型、描述
permission string

要授予协作者的权限。**仅对组织拥有的仓库有效。**我们接受以下要设置的权限:pulltriagepushmaintainadmin,您也可以指定自定义仓库角色名称(如果拥有组织已定义任何角色)。

默认: push

用于“添加仓库协作者”的 HTTP 响应状态码

状态码描述
201

创建新邀请时的响应

204

响应时

  • 将现有协作者添加为协作者
  • 将组织成员添加为个人协作者
  • 将现有团队成员(其团队也是仓库协作者)添加为个人协作者
403

禁止

422

验证失败,或端点已被垃圾邮件攻击。

用于“添加仓库协作者”的代码示例

请求示例

put/repos/{owner}/{repo}/collaborators/{username}
curl -L \ -X PUT \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/collaborators/USERNAME \ -d '{"permission":"triage"}'

创建新邀请时的响应

状态:201
{ "id": 1, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "repository": { "id": 1296269, "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5", "name": "Hello-World", "full_name": "octocat/Hello-World", "owner": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/octocat/Hello-World", "description": "This your first repo!", "fork": false, "url": "https://api.github.com/repos/octocat/Hello-World", "archive_url": "https://api.github.com/repos/octocat/Hello-World/{archive_format}{/ref}", "assignees_url": "https://api.github.com/repos/octocat/Hello-World/assignees{/user}", "blobs_url": "https://api.github.com/repos/octocat/Hello-World/git/blobs{/sha}", "branches_url": "https://api.github.com/repos/octocat/Hello-World/branches{/branch}", "collaborators_url": "https://api.github.com/repos/octocat/Hello-World/collaborators{/collaborator}", "comments_url": "https://api.github.com/repos/octocat/Hello-World/comments{/number}", "commits_url": "https://api.github.com/repos/octocat/Hello-World/commits{/sha}", "compare_url": "https://api.github.com/repos/octocat/Hello-World/compare/{base}...{head}", "contents_url": "https://api.github.com/repos/octocat/Hello-World/contents/{+path}", "contributors_url": "https://api.github.com/repos/octocat/Hello-World/contributors", "deployments_url": "https://api.github.com/repos/octocat/Hello-World/deployments", "downloads_url": "https://api.github.com/repos/octocat/Hello-World/downloads", "events_url": "https://api.github.com/repos/octocat/Hello-World/events", "forks_url": "https://api.github.com/repos/octocat/Hello-World/forks", "git_commits_url": "https://api.github.com/repos/octocat/Hello-World/git/commits{/sha}", "git_refs_url": "https://api.github.com/repos/octocat/Hello-World/git/refs{/sha}", "git_tags_url": "https://api.github.com/repos/octocat/Hello-World/git/tags{/sha}", "git_url": "git:github.com/octocat/Hello-World.git", "issue_comment_url": "https://api.github.com/repos/octocat/Hello-World/issues/comments{/number}", "issue_events_url": "https://api.github.com/repos/octocat/Hello-World/issues/events{/number}", "issues_url": "https://api.github.com/repos/octocat/Hello-World/issues{/number}", "keys_url": "https://api.github.com/repos/octocat/Hello-World/keys{/key_id}", "labels_url": "https://api.github.com/repos/octocat/Hello-World/labels{/name}", "languages_url": "https://api.github.com/repos/octocat/Hello-World/languages", "merges_url": "https://api.github.com/repos/octocat/Hello-World/merges", "milestones_url": "https://api.github.com/repos/octocat/Hello-World/milestones{/number}", "notifications_url": "https://api.github.com/repos/octocat/Hello-World/notifications{?since,all,participating}", "pulls_url": "https://api.github.com/repos/octocat/Hello-World/pulls{/number}", "releases_url": "https://api.github.com/repos/octocat/Hello-World/releases{/id}", "ssh_url": "[email protected]:octocat/Hello-World.git", "stargazers_url": "https://api.github.com/repos/octocat/Hello-World/stargazers", "statuses_url": "https://api.github.com/repos/octocat/Hello-World/statuses/{sha}", "subscribers_url": "https://api.github.com/repos/octocat/Hello-World/subscribers", "subscription_url": "https://api.github.com/repos/octocat/Hello-World/subscription", "tags_url": "https://api.github.com/repos/octocat/Hello-World/tags", "teams_url": "https://api.github.com/repos/octocat/Hello-World/teams", "trees_url": "https://api.github.com/repos/octocat/Hello-World/git/trees{/sha}", "hooks_url": "http://api.github.com/repos/octocat/Hello-World/hooks" }, "invitee": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false }, "inviter": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false }, "permissions": "write", "created_at": "2016-06-13T14:52:50-05:00", "url": "https://api.github.com/user/repository_invitations/1296269", "html_url": "https://github.com/octocat/Hello-World/invitations" }

删除仓库协作者

从仓库中删除协作者。

要使用此端点,经过身份验证的用户必须是仓库的管理员或将自己作为目标进行删除。

此端点还

  • 取消任何未完成的邀请
  • 取消分配用户对任何问题的分配
  • 如果用户不是组织成员,并且不是任何其他组织存储库的合作者,则会移除其对组织项目的访问权限。
  • 取消对存储库的关注。
  • 更新对包的访问权限。

移除用户作为合作者会对分支产生以下影响。

  • 如果用户通过其对该存储库的成员资格访问了分支,则用户也将从分支中移除。
  • 如果用户拥有该存储库的自己的分支,则该分支将被删除。
  • 如果用户仍然对存储库具有读取权限,则来自分支的该用户的打开的拉取请求将被拒绝。

注意:用户仍然可以通过组织权限(如基本存储库权限)访问存储库。

虽然 API 会立即响应,但额外的权限更新可能需要一些额外的时间才能在后台完成。

有关分支权限的更多信息,请参阅“关于分支的权限和可见性”。

用于“移除存储库合作者”的细粒度访问令牌。

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “管理”仓库权限(写入)

用于“移除存储库合作者”的参数。

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必需

仓库的帐户所有者。名称不区分大小写。

repo string 必需

仓库的名称,不包括 .git 扩展名。名称不区分大小写。

username 字符串 必需

GitHub 用户帐户的用户名。

用于“移除存储库合作者”的 HTTP 响应状态代码。

状态码描述
204

当合作者从存储库中移除时,将返回无内容。

403

禁止

422

验证失败,或端点已被垃圾邮件攻击。

用于“移除存储库合作者”的代码示例。

请求示例

delete/repos/{owner}/{repo}/collaborators/{username}
curl -L \ -X DELETE \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/collaborators/USERNAME

当合作者从存储库中移除时,将返回无内容。

状态:204

获取用户的存储库权限

检查合作者的存储库权限。可能的存储库权限为 adminwritereadnone

注意permission 属性提供 adminwritereadnone 的传统基本角色,其中 maintain 角色映射到 writetriage 角色映射到 read。要确定分配给合作者的角色,请参阅 role_name 属性,它将提供完整的角色名称,包括自定义角色。permissions 哈希也可以用于确定合作者对存储库的哪个基本访问级别。

获取用户仓库权限的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限集

  • “元数据”仓库权限(读取)

获取用户仓库权限的参数

标头
名称、类型、描述
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、描述
owner string 必需

仓库的帐户所有者。名称不区分大小写。

repo string 必需

仓库的名称,不包括 .git 扩展名。名称不区分大小写。

username 字符串 必需

GitHub 用户帐户的用户名。

获取用户仓库权限的 HTTP 响应状态码

状态码描述
200

如果用户具有管理员权限

404

资源未找到

获取用户仓库权限的代码示例

请求示例

get/repos/{owner}/{repo}/collaborators/{username}/permission
curl -L \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/collaborators/USERNAME/permission

如果用户具有管理员权限

状态:200
{ "permission": "admin", "role_name": "admin", "user": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false } }