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

用于部署密钥的 REST API 端点

使用 REST API 来创建和管理部署密钥。

关于部署密钥

你可以使用部署密钥(一种授予对单个存储库的访问权限的 SSH 密钥)从 GitHub.com 上的存储库启动项目到你的服务器。GitHub 将密钥的公有部分直接附加到你的存储库,而不是个人帐户,并且密钥的私有部分保留在你的服务器上。有关更多信息,请参阅“交付部署”。

可以通过以下 API 端点或使用 GitHub Web 界面设置部署密钥。若要了解如何在 Web 界面中设置部署密钥,请参阅“管理部署密钥”。

在以下几种情况下,部署密钥将被其他活动删除

  • 如果部署密钥是使用个人访问令牌创建的,则删除个人访问令牌也将删除部署密钥。重新生成个人访问令牌不会删除部署密钥。
  • 如果部署密钥是使用 OAuth 应用令牌创建的,则吊销令牌也将删除部署密钥。

相反,这些活动不会删除部署密钥

  • 如果部署密钥是使用 GitHub 应用用户访问令牌创建的,则吊销令牌不会删除部署密钥。
  • 如果部署密钥是使用 GitHub 应用安装访问令牌创建的,则卸载或删除应用不会删除部署密钥。
  • 如果部署密钥是使用个人访问令牌创建的,则重新生成个人访问令牌不会删除部署密钥。

列出部署密钥

用于“列出部署密钥”的细粒度访问令牌

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

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

  • “管理”存储库权限(读取)

“列出部署密钥”的参数

标题
名称、类型、说明
accept string

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

路径参数
名称、类型、说明
owner string 必需

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

repo string 必需

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

查询参数
名称、类型、说明
per_page integer

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

默认: 30

page integer

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

默认: 1

“列出部署密钥”的 HTTP 响应状态代码

状态代码说明
200

确定

“列出部署密钥”的代码示例

请求示例

get/repos/{owner}/{repo}/keys
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/keys

响应

状态:200
[ { "id": 1, "key": "ssh-rsa AAA...", "url": "https://api.github.com/repos/octocat/Hello-World/keys/1", "title": "octocat@octomac", "verified": true, "created_at": "2014-12-10T15:53:42Z", "read_only": true, "added_by": "octocat", "last_used": "2022-01-10T15:53:42Z" } ]

创建部署密钥

您可以创建只读部署密钥。

“创建部署密钥”的细粒度访问令牌

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

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

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

“创建部署密钥”的参数

标题
名称、类型、说明
accept string

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

路径参数
名称、类型、说明
owner string 必需

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

repo string 必需

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

正文参数
名称、类型、说明
title string

密钥的名称。

key string Required

密钥的内容。

read_only boolean

如果为 true,则密钥只能读取存储库内容。否则,密钥可以读取和写入。

具有写入权限的部署密钥可以执行与具有管理权限的组织成员或个人存储库的协作者相同操作。有关更多信息,请参阅“组织的存储库权限级别”和“用户帐户存储库的权限级别”。

“创建部署密钥”的 HTTP 响应状态代码

状态代码说明
201

已创建

422

验证失败,或端点已被垃圾邮件轰炸。

“创建部署密钥”的代码示例

请求示例

post/repos/{owner}/{repo}/keys
curl -L \ -X POST \ -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/keys \ -d '{"title":"octocat@octomac","key":"ssh-rsa AAA...","read_only":true}'

响应

状态:201
{ "id": 1, "key": "ssh-rsa AAA...", "url": "https://api.github.com/repos/octocat/Hello-World/keys/1", "title": "octocat@octomac", "verified": true, "created_at": "2014-12-10T15:53:42Z", "read_only": true, "added_by": "octocat", "last_used": "2022-01-10T15:53:42Z" }

获取部署密钥

“获取部署密钥”的细粒度访问令牌

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

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

  • “管理”存储库权限(读取)

“获取部署密钥”的参数

标题
名称、类型、说明
accept string

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

路径参数
名称、类型、说明
owner string 必需

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

repo string 必需

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

key_id 整数 必需

密钥的唯一标识符。

“获取部署密钥”的 HTTP 响应状态代码

状态代码说明
200

确定

404

找不到资源

“获取部署密钥”的代码示例

请求示例

get/repos/{owner}/{repo}/keys/{key_id}
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/keys/KEY_ID

响应

状态:200
{ "id": 1, "key": "ssh-rsa AAA...", "url": "https://api.github.com/repos/octocat/Hello-World/keys/1", "title": "octocat@octomac", "verified": true, "created_at": "2014-12-10T15:53:42Z", "read_only": true, "added_by": "octocat", "last_used": "2022-01-10T15:53:42Z" }

删除部署密钥

部署密钥是不可变的。如果您需要更新密钥,请删除密钥并创建一个新密钥。

“删除部署密钥”的细粒度访问令牌

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

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

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

“删除部署密钥”的参数

标题
名称、类型、说明
accept string

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

路径参数
名称、类型、说明
owner string 必需

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

repo string 必需

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

key_id 整数 必需

密钥的唯一标识符。

“删除部署密钥”的 HTTP 响应状态代码

状态代码说明
204

无内容

“删除部署密钥”的代码示例

请求示例

delete/repos/{owner}/{repo}/keys/{key_id}
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/keys/KEY_ID

响应

状态:204