> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Vincular repositorio de la GitHub App

> Vincula un repositorio y una rama de GitHub a una aplicación mediante la GitHub App de Square Cloud.

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  La clave de API de tu cuenta. Puedes encontrarla en la [configuración de tu cuenta](https://squarecloud.app/es/account/security).
</ParamField>

Este endpoint vincula una aplicación a un repositorio y una rama de GitHub mediante la GitHub App de Square Cloud, de modo que cada push a esa rama despliega la aplicación. Es la alternativa recomendada a [Configurar Webhook de GitHub](/es/api-reference/endpoint/apps/deploy/webhooks): no se guarda ningún token de acceso personal y cada despliegue aparece como un Check Run en el commit.

Antes de llamarlo, conecta tu cuenta de GitHub a Square Cloud e instala la GitHub App de Square Cloud en el repositorio. El repositorio debe estar cubierto por una instalación que pertenezca a tu propia cuenta de GitHub; de lo contrario, la solicitud falla con `REPOSITORY_NOT_AVAILABLE`. Funciona con una clave de API que tenga el ámbito `apps:deploy`, y solo el propietario de la aplicación puede llamarlo.

Una aplicación tiene un solo vínculo de GitHub App a la vez, así que [desvincula](/es/api-reference/endpoint/apps/deploy/github-app-unlink) el repositorio actual antes de vincular otro, y el mismo repositorio y rama no pueden estar vinculados a dos de tus aplicaciones. Vincular invalida la respuesta en caché de [Obtener Despliegue Actual](/es/api-reference/endpoint/apps/deploy/info). Las llamadas están limitadas a 3 cada 60 segundos por usuario, compartidas con la desvinculación.

### Parámetros

<ParamField path="app_id" type="string" placeholder="Application ID" required>
  El ID de la aplicación. Puedes encontrarlo en la URL del panel de tu aplicación.
</ParamField>

<ParamField body="repositoryName" type="string" placeholder="octocat/hello-world" required>
  El nombre completo del repositorio, en el formato `owner/repository`.
</ParamField>

<ParamField body="repositoryBranch" type="string" placeholder="main" required>
  La rama cuyos pushes despliegan la aplicación. Hasta 256 caracteres, y debe existir en el repositorio.
</ParamField>

### Respuesta

<ResponseField name="status" type="string">
  Indica si la llamada fue exitosa. `success` si fue exitosa, `error` si no.
</ResponseField>

<ResponseField name="response" type="object">
  El contenido de la respuesta.

  <Expandable title="Alternar objeto">
    <ResponseField name="repository" type="object">
      El repositorio vinculado.

      <Expandable title="Alternar objeto">
        <ResponseField name="id" type="number">
          El ID de GitHub del repositorio.
        </ResponseField>

        <ResponseField name="full_name" type="string">
          El nombre completo del repositorio.
        </ResponseField>

        <ResponseField name="branch" type="string">
          La rama que despliega la aplicación.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={"system"}
  {
      "status": "success",
      "response": {
          "repository": {
              "id": 1234567,
              "full_name": "octocat/hello-world",
              "branch": "main"
          }
      }
  }
  ```
</ResponseExample>

### Errores comunes

| Código                                 | HTTP | Significado                                                                                        |
| -------------------------------------- | ---- | -------------------------------------------------------------------------------------------------- |
| `MISSING_REQUIRED_FIELDS`              | 400  | Falta `repositoryName` o `repositoryBranch`.                                                       |
| `INVALID_BRANCH_LENGTH`                | 400  | El nombre de la rama supera los 256 caracteres.                                                    |
| `BRANCH_NOT_FOUND`                     | 400  | La rama no existe en el repositorio.                                                               |
| `GIT_ALREADY_CONFIGURED`               | 400  | La aplicación ya tiene un repositorio de la GitHub App. Desvincúlalo primero.                      |
| `REPOSITORY_NOT_AVAILABLE`             | 403  | La GitHub App de Square Cloud no está instalada en el repositorio a través de tu cuenta de GitHub. |
| `REPOSITORY_NOT_FOUND`                 | 404  | El repositorio no existe o tu cuenta de GitHub no puede verlo.                                     |
| `APP_NOT_FOUND`                        | 404  | La aplicación no existe o no eres su propietario.                                                  |
| `REPOSITORY_BRANCH_ALREADY_CONFIGURED` | 409  | Otra de tus aplicaciones ya vincula este repositorio y rama.                                       |
