# 堆积拉取请求 API 和 Webhook

使用 GitHub REST 和 GraphQL API 和 Webhook 以编程方式读取和管理堆积拉取请求。

> \[!NOTE] 此功能以公共预览版提供，可能会发生更改。

GitHub REST 和 GraphQL API 都公开堆积拉取请求。 REST API 支持读取和管理堆栈，而 GraphQL API 支持只读查询。

使用 API 读取拉取请求的堆栈成员身份，或为堆积拉取请求生成自己的自动化和集成。

## REST API

REST API 以两种方式公开堆积拉取请求：

* **`stack`拉取请求资源上的对象。** 当拉取请求属于堆栈时，其 REST 资源包括一个 `stack` 对象。 这样，便可以直接从拉取请求读取拉取请求的堆栈成员身份，包括堆栈的数量和大小以及拉取请求的位置和基数。
* **Stacks API。** 用于列出、读取、创建、扩展和解散堆栈的专用终结点集。 这是用于创建和修改堆栈的图面。

有关终结点、参数和架构，请参阅 [用于拉取请求的 REST API 终结点](/zh/enterprise-cloud@latest/rest/pulls/pulls)。

> \[!IMPORTANT]
> 如果通过 API 合并并想要使用堆叠拉取请求，则必须使用新的异步合并 API。

### 合并 API

通过 API 合并堆积拉取请求时，必须使用异步合并终结点。

堆栈不能与旧的同步合并终结点或突变合并。 合并堆积拉取请求时，堆栈中的每个拉取请求将合并或排队以合并到基分支中， 合并拉取请求堆栈可能需要几分钟才能合并的拉取请求。 因此，在提交合并请求时，合并在后台运行，然后你可以轮询结果。

提交打开的 PR 时，只会检查基本拉取请求状态。 稍后在合并实际运行时评估分支保护和存储库规则，并在轮询时将规则失败报告为失败结果。 堆栈合并请求是原子请求，这意味着整个拉取请求合并组，或添加到合并队列，或者其中没有任何请求。

有关详细信息，请参阅 [用于拉取请求的 REST API 终结点](/zh/enterprise-cloud@latest/rest/pulls/pulls?apiVersion=2026-03-10#merge-a-pull-request-asynchronously)。

## GraphQL API

GraphQL API 通过类型上的`stack`只读`stackEntry`字段公开`PullRequest`拉取请求的堆栈成员身份。 使用这些字段查询拉取请求所属的堆栈及其内部位置。

GraphQL API 是堆栈的只读;没有堆栈突变。 若要创建或修改堆栈，请使用 REST API。

有关字段、对象和架构，请参阅 [拉取请求](/zh/enterprise-cloud@latest/graphql/reference/pulls#object-pullrequeststack)。

## 网络钩子

当拉取请求属于堆栈时， GitHub 将属性添加到 `stack``pull_request` Webhook 事件有效负载中的对象。 这允许应用和集成检查堆栈的目标分支，而不仅仅是拉取请求的直接父分支。

该 `stack` 对象包含在拉取请求生命周期事件的 Webhook 有效负载中 `pull_request` ，该事件发生在拉取请求是堆栈的一部分。

请参阅“[Webhook 事件和有效负载](/zh/enterprise-cloud@latest/webhooks/webhook-events-and-payloads?actionType=stacked#pull_request)”。

## 延伸阅读

* [堆积拉取请求 CLI 命令](/zh/enterprise-cloud@latest/pull-requests/reference/stacked-prs-cli-commands)
* [关于堆叠式拉取请求](/zh/enterprise-cloud@latest/pull-requests/get-started/about-stacked-prs)