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

协作者的 REST API 端点

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

列出仓库协作者

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

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

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

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

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

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

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

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

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

标头
名称、类型、说明
accept 字符串

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

路径参数
名称、类型、说明
owner 字符串 必填

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

repo 字符串 必填

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

查询参数
名称、类型、说明
affiliation 字符串

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

默认值: all

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

permission 字符串

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

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

per_page 整数

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

默认值: 30

page 整数

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

默认值: 1

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

状态代码说明
200

确定

404

资源未找到

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

请求示例

获取/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 字符串

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

路径参数
名称、类型、说明
owner 字符串 必填

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

repo 字符串 必填

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

username 字符串 必填

GitHub 用户帐户的句柄。

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

状态代码说明
204

如果用户是协作者,则响应

404

如果用户不是协作者,则找不到

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

请求示例

获取/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,没有任何其他指示表明权限级别已更改。

速率限制

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

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

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

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

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

“添加仓库合作者”的参数

标头
名称、类型、说明
accept 字符串

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

路径参数
名称、类型、说明
owner 字符串 必填

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

repo 字符串 必填

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

username 字符串 必填

GitHub 用户帐户的句柄。

主体参数
名称、类型、说明
permission 字符串

要授予合作者的权限。**仅在组织拥有的仓库上有效。**我们接受设置以下权限: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 字符串

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

路径参数
名称、类型、说明
owner 字符串 必填

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

repo 字符串 必填

仓库的名称,不带 .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 字符串

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

路径参数
名称、类型、说明
owner 字符串 必填

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

repo 字符串 必填

仓库的名称,不带 .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
{ "权限": "管理员", "角色名称": "管理员", "用户": { "登录名": "octocat", "ID": 1, "节点 ID": "MDQ6VXNlcjE=", "头像 URL": "https://github.com/images/error/octocat_happy.gif", "Gravatar ID": "", "URL": "https://api.github.com/users/octocat", "HTML URL": "https://github.com/octocat", "关注者 URL": "https://api.github.com/users/octocat/followers", "关注 URL": "https://api.github.com/users/octocat/following{/other_user}", "Gist URL": "https://api.github.com/users/octocat/gists{/gist_id}", "收藏 URL": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "订阅 URL": "https://api.github.com/users/octocat/subscriptions", "组织 URL": "https://api.github.com/users/octocat/orgs", "仓库 URL": "https://api.github.com/users/octocat/repos", "事件 URL": "https://api.github.com/users/octocat/events{/privacy}", "接收事件 URL": "https://api.github.com/users/octocat/received_events", "类型": "用户", "站点管理员": false } }