Pular para o conteúdo principal

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.

O módulo network só está disponível em aplicações website. Refine o tipo com app.isWebsite() antes de usá-lo:
const app = await api.applications.fetch("abc123def456abc123def456");

if (!app.isWebsite()) {
    throw new Error("Esta aplicação não é um site");
}

app.network; // NetworkModule

Domínio customizado

app.network.setCustomDomain(domain) define ou remove o domínio customizado vinculado ao site.
await app.network.setCustomDomain("seusite.com");

// Passe "@" para remover o domínio customizado configurado
await app.network.setCustomDomain("@");
Domínios customizados exigem o plano Senior ou superior.

Registros DNS

Depois de vincular um domínio, configure o DNS no seu registrador. app.network.dns() retorna o registro de propriedade e o status do SSL.
const dns = await app.network.dns();

console.log(`${dns.ownership.type} ${dns.ownership.name}${dns.ownership.value}`);
console.log(`SSL: ${dns.ssl.status}`); // "pending" | "pending_validation" | "active"
O formato mudou na v4. app.network.dns() retornava um array de registros — agora retorna um único objeto: { ownership, ssl }.

Analytics

app.network.analytics({ start, end }) retorna analytics agregados da edge. start e end aceitam strings ISO 8601 ou Date. A janela máxima de retenção é de 7 dias.
const since = new Date(Date.now() - 24 * 60 * 60 * 1000);

const analytics = await app.network.analytics({
    start: since,
    end: new Date(),
});

if ("visits" in analytics) {
    console.log(analytics.visits.length, "buckets de tempo");
    console.log("Principais países:", analytics.countries.slice(0, 5));
    console.log("Principais paths:", analytics.paths.slice(0, 5));
}
Para janelas vazias (ex.: antes da aplicação ser criada) a API retorna {}. Verifique com "visits" in analytics antes de ler os dados.
A v3 chamava esse endpoint sem argumentos. A v4 exige { start, end }.

Monitoramento de erros

app.network.errors({ start, end, include4xx? }) retorna o breakdown de erros da edge. Por padrão, apenas 5xx são considerados.
const errors = await app.network.errors({
    start: since,
    end: new Date(),
    include4xx: true, // inclui 4xx junto dos 5xx
});

if ("summary" in errors) {
    console.log(`Total: ${errors.summary.total}`);
    console.log("Por classe:",         errors.summary.by_class);
    console.log("Paths que mais falham:", errors.top_paths.slice(0, 3));
}

Logs de requisição

app.network.logs({ start, end }) retorna os logs por requisição da edge.
const logs = await app.network.logs({ start: since, end: new Date() });

for (const log of logs.slice(0, 5)) {
    console.log(
        log.timestamp,
        log.request.method, log.request.path,
        "→",
        log.response.status,
        `(${log.client.country ?? "??"})`,
    );
}
Logs por requisição exigem o plano Pro ou superior.

Percentis de latência

app.network.performance({ start, end }) retorna as latências p50 / p95 / p99 para as camadas edge e origin.
const perf = await app.network.performance({ start: since, end: new Date() });

if ("summary" in perf) {
    const { p50, p95, p99 } = perf.summary.edge;
    console.log(`Edge p50/p95/p99: ${p50}/${p95}/${p99}ms`);
    console.log("Paths mais lentos:", perf.slowest_paths.slice(0, 3));
}
Métricas de performance exigem o plano Pro ou superior.

Limpando o cache da edge

app.network.purgeCache() invalida o cache inteiro da edge para os domínios da aplicação.
await app.network.purgeCache();
Na v3 (e na efêmera v4.0.0) purgeCache(paths?) aceitava uma lista de paths para invalidar de forma seletiva. A partir da v4.0.1 o argumento foi removido — chamar purgeCache() sempre limpa o cache inteiro.