Vai al contenuto principale
Gli endpoint di questa pagina si applicano solo alle applicazioni sito web — app con un dominio web. Chiamarli su un’applicazione non web fallisce.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Dominio personalizzato

api.SetApplicationCustomDomain(appID, domain) imposta il dominio personalizzato associato al sito web.
err := api.SetApplicationCustomDomain("abc123def456abc123def456", "yoursite.com")
if err != nil {
	panic(err)
}

Record DNS

Dopo aver collegato un dominio personalizzato devi configurare il DNS presso il tuo registrar. api.GetApplicationDNS(appID) restituisce i record da creare come []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)
}
CampoTipoDescrizione
Typestring"txt" oppure "cname" — i record TXT coprono la verifica di proprietà e la validazione SSL; il CNAME trasporta il traffico e punta sempre a cname.squareweb.app
NamestringNome del record da creare
ValuestringValore del record
StatusstringStato di validazione: "pending", "pending_validation" oppure "active"

Analytics

api.GetApplicationAnalytics(appID, start, end) restituisce le analytics edge aggregate per la finestra indicata come squarecloud.NetworkAnalytics. La finestra è obbligatoria e la retention massima è di 7 giorni.
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), "time buckets") // 15-minute series
fmt.Println(analytics.Countries)
fmt.Println(analytics.Paths)
La risposta contiene serie temporali a 15 minuti (Visits, Countries, Devices, OS, Browsers, Protocols, Methods, Paths, Referers, Providers) e bucket sull’intera finestra (IPs, StatusCodes, Bots, ContentTypes).
Per una finestra interamente precedente alla creazione dell’applicazione, l’API restituisce un oggetto vuoto — ogni slice della risposta è nil. Controlla le lunghezze prima di indicizzare.

Filtri di drill-down

Oltre alla finestra, l’endpoint accetta filtri opzionali come parametri di query — passali con rest.WithQueryParam. Ogni filtro restringe contemporaneamente ogni ripartizione della risposta:
FiltroNote
countryCodice paese a 2 lettere, ad esempio "BR"
ipCorrispondenza esatta dell’IP
pathCorrispondenza per prefisso, ad esempio "/api"
statusCodice di stato HTTP, ad esempio "404"
osSistema operativo
browserNome del browser
protocolProtocollo della richiesta
refererUsa "Direct" per le richieste senza referer
providerProvider di rete, ad esempio "GOOGLE (15169)" (ASN)
content_typeUsa "Unknown" per i tipi di contenuto non classificati
botUsa "Unverified" per il traffico normale (non bot)
analytics, err := api.GetApplicationAnalytics(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("country", "BR"),
	rest.WithQueryParam("status", "404"),
	rest.WithQueryParam("bot", "Unverified"),
)

Tracciamento degli errori

api.GetApplicationNetworkErrors(appID, start, end) restituisce la ripartizione degli errori edge. Per impostazione predefinita sono inclusi solo gli errori 5xx — aggiungi include_4xx=true per includere i 4xx.
errs, err := api.GetApplicationNetworkErrors(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("include_4xx", "true"),
)
if err != nil {
	panic(err)
}

Log per richiesta

api.GetApplicationNetworkLogs(appID, start, end) restituisce i log edge per singola richiesta.
logs, err := api.GetApplicationNetworkLogs("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
I log per richiesta richiedono un piano Pro o superiore.

Percentili di latenza

api.GetApplicationNetworkPerformance(appID, start, end) restituisce le latenze p50 / p95 / p99 per i livelli edge e origin.
perf, err := api.GetApplicationNetworkPerformance("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
Le metriche di performance richiedono un piano Pro o superiore.

Svuotare la cache edge

api.PurgeApplicationCache(appID) invalida l’intera cache edge per i domini dell’applicazione.
err := api.PurgeApplicationCache("abc123def456abc123def456")
if err != nil {
	panic(err)
}

Domini e load balancer a livello di account

Questi due metodi operano su tutte le applicazioni dell’account, non su un singolo sito web.

Elencare tutti i domini

api.GetApplicationDomains() restituisce ogni dominio configurato tra tutte le applicazioni dell’account come []squarecloud.AppDomain. I domini personalizzati sono elencati per primi; le applicazioni senza dominio web vengono omesse.
domains, err := api.GetApplicationDomains()
if err != nil {
	panic(err)
}

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

Load balancer

api.GetLoadBalancers() raggruppa le applicazioni che condividono un dominio personalizzato, restituendo un squarecloud.LoadBalancers.
lb, err := api.GetLoadBalancers()
if err != nil {
	panic(err)
}

fmt.Println("plan limit:", lb.Limit)
for _, balancer := range lb.Balancers {
	fmt.Println(balancer.Hostname, len(balancer.Apps), "apps")
}
Un gruppo con 2 o più app è un load balancer attivo: il traffico viene bilanciato all’edge con failover automatico quando una delle app è offline. Limit è il numero massimo di applicazioni che possono condividere un dominio con il piano dell’account: 2 (Standard), 5 (Pro), 10 (Enterprise).