> ## 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 e upload

> Faça upload de uma nova aplicação para a Square Cloud ou commit de novos arquivos em uma aplicação existente.

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

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

## Fazendo upload de uma nova aplicação

`api.PostApplications(reader)` faz upload de um zip a partir de qualquer `io.Reader` e cria uma aplicação totalmente nova, retornando um `*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 da aplicação recém-criada
fmt.Println(uploaded.Name)             // nome de exibição
fmt.Println(uploaded.RAM)              // RAM alocada em MB
fmt.Println(uploaded.CPU)              // shares de CPU alocados
fmt.Println(uploaded.Language.Name)    // ex.: "go"
fmt.Println(uploaded.Language.Version) // ex.: "1.24"
```

`Description` e `Subdomain` só estão presentes quando definidos no arquivo de configuração.

<Note>
  O zip deve conter o ponto de entrada da sua aplicação, o arquivo de dependências e o arquivo de configuração `squarecloud.app`/`squarecloud.config`. Veja o [guia do arquivo de configuração](/pt-br/getting-started/config-file).
</Note>

## Fazendo commit de arquivos em uma aplicação existente

`api.PostApplicationCommit(appID, reader)` faz upload de um zip para uma aplicação já implantada, substituindo os arquivos correspondentes.

```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 fazer commit em um subdiretório em vez da raiz da aplicação, passe o parâmetro de query `path` com `rest.WithQueryParam`:

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

O commit não reinicia a aplicação — envie um sinal de restart em seguida se a sua mudança exigir:

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