Skip to main content
Questa pagina documenta @squarecloud/api v6, una riscrittura dell’SDK. Arrivi dalla v5? Leggi la guida alla migrazione v5 → v6.

Requisiti

  • Node.js 22 o più recente, Deno, Bun o un runtime edge. All’SDK servono solo fetch, FormData, Blob e i web stream.
  • Una chiave API (vedi Chiave API e scope).
Il pacchetto include build ESM e CommonJS, non ha dipendenze a runtime e contiene i propri tipi TypeScript: non ti serve più @squarecloud/api-types.

Installazione

Chiave API e scope

Crea una chiave su squarecloud.app/account/security. L’SDK la invia così com’è nell’header Authorization (senza prefisso Bearer). Una chiave può essere limitata a determinati scope (apps:read, apps:deploy, apps:control, ai:chat, …) e ad app o database specifici:
  • Una chiamata al di fuori di questi limiti lancia un SquareCloudAPIError con 403 MISSING_SCOPE o RESOURCE_NOT_ALLOWED.
  • I metodi di elenco (account.me(), apps.statusAll(), …) restituiscono solo le risorse che la chiave può vedere.
  • Una chiave sconosciuta, revocata o scaduta produce 401 ACCESS_DENIED.
Tieni la chiave sul server. L’SDK funziona anche nel browser, ma in quel caso la chiave sarebbe esposta a ogni visitatore.
Gli esempi leggono la chiave dalla variabile d’ambiente SQUARECLOUD_API_KEY. Impostala nel terminale in cui li esegui:

Creare il client

Il primo esempio stampa il nome del tuo account e il numero di app che la chiave può vedere:
Una chiave vuota o composta solo da spazi lancia un TypeError nel costruttore, prima di qualsiasi richiesta.

Opzioni

La chiave API è memorizzata come normale proprietà dell’oggetto client. Non fare console.log né serializzare il client.

Moduli

Gli unici export a runtime sono SquareCloudAPI, SquareCloudAPIError e BASE_URL. Ogni altro export (App, RuntimeStats, ErrorCode, …) è un tipo:

Convenzioni

Prima gli id, in risposta dati semplici

Ogni metodo accetta l’id della risorsa come primo argomento e restituisce dati semplici (niente classi, niente cache). I nomi dei campi sono quelli dell’API (created_at, version_id, lastModified, joinedAt, netIO, …), quindi il riferimento API si applica così com’è.
  • Le mutazioni si risolvono in void, a meno che l’API non restituisca dati (envs.*, deploys.setWebhook, deploys.linkGithubApp, databases.resetCredentials e i metodi create).
  • Un risultato stringa non è mai undefined: è "" quando l’API non ne invia.
  • Gli elenchi arrivano completi in una sola chiamata: non c’è paginazione.
I metodi sono arrow function, quindi puoi destrutturarli:

App dei workspace

Ogni appId accetta anche la forma composta <appId>-<workspaceId> per agire su un’app condivisa con te tramite un workspace. workspaces.get() e workspaces.list() restituiscono gli id grezzi; l’id composto lo costruisci tu:

Gli id vengono codificati

Gli id nel percorso dell’URL sono codificati in percent-encoding. Un id vuoto, . o .. raggiungerebbe una route diversa, quindi fallisce localmente con INVALID_ID (status 0) prima che venga inviato qualsiasi cosa. Le route dei workspace invece inviano i loro id nel body: lì, INVALID_ID (400) proviene dal server.

Date

Gli argomenti start ed end (vedi Rete) accettano una stringa ISO 8601 o un Date. Le date nelle risposte restano come le invia l’API (stringhe ISO, o millisecondi Unix dove l’API li usa).

Timeout

Un timeoutMs pari a 0 o inferiore, Infinity o >= 2^31 disattiva tutti i timeout, comprese le soglie minime di 120 s. Solo cinque metodi accettano un AbortSignal: apps.create, apps.commit, files.write, apps.realtime e downloadSnapshot.
Una chiamata annullata viene rifiutata con il reason del signal, non con un SquareCloudAPIError. Un ciclo realtime() annullato semplicemente termina.

Account

api.account.me() restituisce l’utente autenticato insieme alle app e ai database che la chiave può vedere.
api.account.snapshots({ scope }) elenca tutti gli snapshot dell’account: vedi Snapshot.

Stato della piattaforma

api.service.status() restituisce lo stato pubblico della piattaforma. La route non richiede una chiave valida, ma il client ne richiede comunque una non vuota.
unknown significa che il controllo stesso non è stato possibile: non è la prova di un disservizio.

Prossimi passi

Gestire le applicazioni

Stato, ciclo di vita, log e metriche.

Errori

Classe di errore, retry e rate limit.

Introduzione all'API

URL base, autenticazione e una prima richiesta.

Quickstart della CLI

Fai il deploy e gestisci le app dal terminale.