Pular para o conteúdo principal
Os endpoints desta página se aplicam apenas a aplicações website — apps com domínio web. Chamá-los em uma aplicação que não é web falha.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Domínio customizado

api.SetApplicationCustomDomain(appID, domain) define o domínio customizado vinculado ao site.
err := api.SetApplicationCustomDomain("abc123def456abc123def456", "seusite.com")
if err != nil {
	panic(err)
}

Registros DNS

Depois de vincular um domínio customizado, configure o DNS no seu registrador. api.GetApplicationDNS(appID) retorna os registros a criar como um []squarecloud.DNSRecord.
records, err := api.GetApplicationDNS("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for _, record := range records {
	fmt.Printf("%s %s%s (%s)\n", record.Type, record.Name, record.Value, record.Status)
}
CampoTipoDescrição
Typestring"txt" ou "cname" — os registros TXT cobrem a propriedade do domínio e a validação SSL; o CNAME carrega o tráfego e sempre aponta para cname.squareweb.app
NamestringNome do registro a criar
ValuestringValor do registro
StatusstringEstado de validação: "pending", "pending_validation" ou "active"

Analytics

api.GetApplicationAnalytics(appID, start, end) retorna analytics agregados da edge para a janela informada como um squarecloud.NetworkAnalytics. A janela é obrigatória, e a retenção máxima é de 7 dias.
end := time.Now()
start := end.Add(-24 * time.Hour)

analytics, err := api.GetApplicationAnalytics("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}

fmt.Println(len(analytics.Visits), "buckets de tempo") // séries de 15 minutos
fmt.Println(analytics.Countries)
fmt.Println(analytics.Paths)
A resposta traz séries temporais de 15 minutos (Visits, Countries, Devices, OS, Browsers, Protocols, Methods, Paths, Referers, Providers) e buckets de janela inteira (IPs, StatusCodes, Bots, ContentTypes).
Para uma janela inteiramente anterior à criação da aplicação, a API retorna um objeto vazio — todos os slices da resposta são nil. Verifique os tamanhos antes de indexar.

Filtros de drill-down

Além da janela, o endpoint aceita filtros opcionais como query parameters — passe-os com rest.WithQueryParam. Cada filtro restringe todos os breakdowns da resposta de uma vez:
FiltroNotas
countryCódigo de país com 2 letras, ex.: "BR"
ipCorrespondência exata de IP
pathCorrespondência por prefixo, ex.: "/api"
statusCódigo de status HTTP, ex.: "404"
osSistema operacional
browserNome do navegador
protocolProtocolo da requisição
refererUse "Direct" para requisições sem referer
providerProvedor de rede, ex.: "GOOGLE (15169)" (ASN)
content_typeUse "Unknown" para tipos de conteúdo não classificados
botUse "Unverified" para tráfego normal (não-bot)
analytics, err := api.GetApplicationAnalytics(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("country", "BR"),
	rest.WithQueryParam("status", "404"),
	rest.WithQueryParam("bot", "Unverified"),
)

Monitoramento de erros

api.GetApplicationNetworkErrors(appID, start, end) retorna o breakdown de erros da edge. Por padrão, apenas erros 5xx são incluídos — adicione include_4xx=true para incluir os 4xx.
errs, err := api.GetApplicationNetworkErrors(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("include_4xx", "true"),
)
if err != nil {
	panic(err)
}

Logs por requisição

api.GetApplicationNetworkLogs(appID, start, end) retorna os logs por requisição da edge.
logs, err := api.GetApplicationNetworkLogs("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
Logs por requisição exigem o plano Pro ou superior.

Percentis de latência

api.GetApplicationNetworkPerformance(appID, start, end) retorna as latências p50 / p95 / p99 para as camadas edge e origin.
perf, err := api.GetApplicationNetworkPerformance("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
Métricas de performance exigem o plano Pro ou superior.

Limpando o cache da edge

api.PurgeApplicationCache(appID) invalida o cache inteiro da edge para os domínios da aplicação.
err := api.PurgeApplicationCache("abc123def456abc123def456")
if err != nil {
	panic(err)
}

Domínios e load balancers de toda a conta

Esses dois métodos operam sobre todas as aplicações da conta, não apenas um único site.

Listando todos os domínios

api.GetApplicationDomains() retorna todos os domínios configurados em todas as aplicações da conta como um []squarecloud.AppDomain. Domínios customizados são listados primeiro; aplicações sem domínio web são omitidas.
domains, err := api.GetApplicationDomains()
if err != nil {
	panic(err)
}

for _, domain := range domains {
	fmt.Println(domain.AppID, domain.Hostname, domain.Type) // "subdomain" | "custom"
}

Load balancers

api.GetLoadBalancers() agrupa aplicações que compartilham um domínio customizado, retornando um squarecloud.LoadBalancers.
lb, err := api.GetLoadBalancers()
if err != nil {
	panic(err)
}

fmt.Println("limite do plano:", lb.Limit)
for _, balancer := range lb.Balancers {
	fmt.Println(balancer.Hostname, len(balancer.Apps), "apps")
}
Um grupo com 2 ou mais apps é um load balancer ativo: o tráfego é balanceado na edge com failover automático quando um dos apps está offline. Limit é o número máximo de aplicações que podem compartilhar um domínio no plano da conta: 2 (Standard), 5 (Pro), 10 (Enterprise).