> ## 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.

# Commit y subida

> Sube una nueva aplicación a Square Cloud o haz commit de nuevos archivos a una aplicación existente.

```go theme={null}
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
```

## Subida de una nueva aplicación

`api.PostApplications(reader)` sube un zip desde cualquier `io.Reader` y crea una aplicación completamente nueva, devolviendo un `*squarecloud.ApplicationUploaded`.

```go theme={null}
file, err := os.Open("app.zip")
if err != nil {
	panic(err)
}
defer file.Close()

uploaded, err := api.PostApplications(file)
if err != nil {
	panic(err)
}

fmt.Println(uploaded.ID)               // ID de la aplicación recién creada
fmt.Println(uploaded.Name)             // nombre visible
fmt.Println(uploaded.RAM)              // RAM asignada en MB
fmt.Println(uploaded.CPU)              // shares de CPU asignados
fmt.Println(uploaded.Language.Name)    // e.g. "go"
fmt.Println(uploaded.Language.Version) // e.g. "1.24"
```

`Description` y `Subdomain` solo están presentes cuando se definen en el archivo de configuración.

<Note>
  El zip debe contener el punto de entrada de tu aplicación, su archivo de dependencias y el archivo de configuración `squarecloud.app`/`squarecloud.config`. Consulta la [guía del archivo de configuración](/es/getting-started/config-file).
</Note>

## Commit de archivos a una aplicación existente

`api.PostApplicationCommit(appID, reader)` sube un zip a una aplicación ya desplegada, reemplazando los archivos coincidentes.

```go theme={null}
file, err := os.Open("dist.zip")
if err != nil {
	panic(err)
}
defer file.Close()

err = api.PostApplicationCommit("abc123def456abc123def456", file)
if err != nil {
	panic(err)
}
```

Para hacer commit en un subdirectorio en lugar de la raíz de la aplicación, pasa el parámetro de query `path` con `rest.WithQueryParam`:

```go theme={null}
err = api.PostApplicationCommit(
	"abc123def456abc123def456",
	file,
	rest.WithQueryParam("path", "src"),
)
```

Hacer commit no reinicia la aplicación — envía una señal de reinicio después si tu cambio lo requiere:

```go theme={null}
err = api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalRestart)
```
