Saltar al contenido principal
app.deploys expone el DeploysModule, que abarca tanto la línea de tiempo de deploys como las dos vías de integración con GitHub.
const app = await api.applications.fetch("abc123def456abc123def456");
app.deploys; // DeploysModule

Listado del historial de deploys

app.deploys.list() devuelve Deployment[][]: un array interno por cada deploy, cada uno recorriendo los estados del ciclo de vida: pending → clone → commit → restarting → success | error.
const history = await app.deploys.list();

for (const timeline of history) {
    const last = timeline.at(-1);
    console.log(`Deploy ${last?.id} ended as ${last?.state}`);

    for (const event of timeline) {
        if (event.state === "clone")  console.log(`  cloned branch ${event.branch}`);
        if (event.state === "commit") console.log(`  files`, event.files);
    }
}
Aplana el resultado si quieres una única lista cronológica:
const flat = history.flat();
En la v3 este método devolvía un Deployment[] plano. La v4 devuelve Deployment[][] para que puedas agrupar los eventos por deploy. Usa .flat() para conservar la forma anterior.
Deployment.id ahora es un SHA-1 de commit plano (40 caracteres hexadecimales). En la v3 estaba formateado como `git-${string}`.

Vinculación mediante la GitHub App de Square Cloud (recomendado)

app.deploys.linkGithubApp({ repositoryName, repositoryBranch }) vincula un repositorio de GitHub a la aplicación a través de la GitHub App oficial.
const repo = await app.deploys.linkGithubApp({
    repositoryName: "octocat/hello-world",
    repositoryBranch: "main",
});

console.log(`Linked ${repo.full_name}#${repo.branch}`);
Para eliminar la vinculación:
await app.deploys.unlinkGithubApp();
linkGithubApp y unlinkGithubApp requieren un token de sesión (JWT) como clave de API: estos endpoints no aceptan claves de API normales.

Vinculación mediante el flujo heredado por webhook

app.deploys.integrateGithubWebhook(accessToken) configura la integración heredada basada en webhook usando un Personal Access Token de GitHub.
const webhookUrl = await app.deploys.integrateGithubWebhook("ghp_xxx...");
console.log(`Configure GitHub to POST to: ${webhookUrl}`);
Pasa "@" para eliminar el webhook:
await app.deploys.integrateGithubWebhook("@");

Inspección de la configuración actual

app.deploys.current() devuelve la vinculación de la GitHub App y la URL del webhook configuradas actualmente, si las hay.
const current = await app.deploys.current();

console.log(current.app);     // GitHub App linkage (or null)
console.log(current.webhook); // legacy webhook URL (or null)
También existe un atajo app.deploys.webhookURL() que devuelve solo la URL del webhook (o undefined).