Pular para o conteúdo principal
Todas as operações desta página vivem no client rest.Rest:
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Buscando uma aplicação

api.GetApplication(appID) retorna o registro completo squarecloud.Application.
app, err := api.GetApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(app.ID, app.Name, app.Cluster, app.CreatedAt)

Propriedades da aplicação

CampoTipoDescrição
IDstringID da aplicação (24 chars hex)
NamestringNome de exibição
DescriptionstringDescrição vinda do arquivo de configuração
OwnerstringID do usuário dono
ClusterstringCluster onde a aplicação roda
RAMintRAM alocada em MB
Languagestringjavascript | typescript | python | java | elixir | go | rust | ruby | php | dotnet | static
Domain*stringHost padrão <subdomain>.squareweb.appnil para apps não-web
Custom*stringDomínio customizado vinculado à aplicação — nil quando não configurado
CreatedAtstringData de criação
Domain e Custom são ponteiros — sempre verifique se são nil antes de desreferenciar:
if app.Domain != nil {
	fmt.Println("rodando em", *app.Domain)
}

Obtendo o status da aplicação

api.GetApplicationStatus(appID) retorna o estado de execução em tempo real com valores formatados para leitura.
status, err := api.GetApplicationStatus("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(status.Status)  // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
fmt.Println(status.Running) // bool
fmt.Println(status.CPU)     // "0.50%"
fmt.Println(status.RAM)     // "120/512MB"
fmt.Println(status.Network) // totais formatados
fmt.Println(status.Storage) // ex.: "0B"

if status.Uptime != nil {
	fmt.Println(time.UnixMilli(*status.Uptime)) // iniciada em
}
Uptime é um *int64 contendo o timestamp de início em milissegundos Unix — é nil quando a aplicação está parada.

Status bruto

api.GetApplicationStatusRaw(appID) chama o mesmo endpoint com ?rawData=true e retorna valores numéricos em vez de strings formatadas — CPU/RAM como números e rede como pares de bytes [in, out]. Use quando quiser calcular ou plotar em vez de exibir.
raw, err := api.GetApplicationStatusRaw("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(raw.CPU)     // 0.5
fmt.Println(raw.RAM)     // 120
fmt.Println(raw.Network) // { Total: [in, out], Now: [in, out] } em bytes
O status formatado é conveniente para exibição ("120/512MB"); o status bruto é o que você quer para dashboards, alertas ou qualquer aritmética — converter strings formatadas de volta em números é frágil.

Status resumido para todas as aplicações

Para evitar uma requisição por aplicação, chame api.GetApplicationListStatus():
list, err := api.GetApplicationListStatus()
if err != nil {
	panic(err)
}

for _, summary := range list {
	fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
Os valores de CPU e RAM só estão presentes para aplicações que estão em execução no momento.

Obtendo os logs

api.GetApplicationLogs(appID) retorna a saída de log mais recente.
logs, err := api.GetApplicationLogs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(logs.Logs) // string

Obtendo métricas

api.GetApplicationMetrics(appID) retorna as últimas 24 horas de amostras de CPU, RAM e rede (até 288 pontos, um a cada 5 minutos) como um []squarecloud.MetricPoint.
metrics, err := api.GetApplicationMetrics("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(len(metrics), "pontos")
for _, point := range metrics {
	fmt.Println(point.Date, point.CPU, point.RAM, point.Net)
}

Ciclo de vida

api.PostApplicationSignal(appID, signal) inicia, para ou reinicia a aplicação. O sinal é uma das constantes squarecloud.ApplicationSignal*:
err := api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalStart)
if err != nil {
	panic(err)
}

// squarecloud.ApplicationSignalStop
// squarecloud.ApplicationSignalRestart

Excluindo uma aplicação

DeleteApplication remove a aplicação permanentemente. Sem um snapshot, os dados não podem ser recuperados.
err := api.DeleteApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}