Skip to main content
Diese Seite dokumentiert @squarecloud/api v6, eine Neuentwicklung des SDK. Du kommst von v5? Lies den Migrationsleitfaden v5 → v6.

Voraussetzungen

  • Node.js 22 oder neuer, Deno, Bun oder eine Edge-Runtime. Das SDK benötigt nur fetch, FormData, Blob und Web Streams.
  • Ein API-Schlüssel (siehe API-Schlüssel und Scopes).
Das Paket enthält ESM- und CommonJS-Builds, hat keine Laufzeitabhängigkeiten und bringt seine eigenen TypeScript-Typen mit: @squarecloud/api-types brauchst du nicht mehr.

Installation

API-Schlüssel und Scopes

Erstelle einen Schlüssel unter squarecloud.app/account/security. Das SDK sendet ihn unverändert im Header Authorization (ohne das Präfix Bearer). Ein Schlüssel kann auf Scopes (apps:read, apps:deploy, apps:control, ai:chat, …) und auf bestimmte Apps oder Datenbanken beschränkt werden:
  • Ein Aufruf außerhalb dieser Grenzen wirft einen SquareCloudAPIError mit 403 MISSING_SCOPE oder RESOURCE_NOT_ALLOWED.
  • Listenmethoden (account.me(), apps.statusAll(), …) geben nur die Ressourcen zurück, die der Schlüssel sehen kann.
  • Ein unbekannter, widerrufener oder abgelaufener Schlüssel ergibt 401 ACCESS_DENIED.
Behalte den Schlüssel auf dem Server. Das SDK läuft zwar auch im Browser, aber dort wäre der Schlüssel für jeden Besucher sichtbar.
Die Beispiele lesen den Schlüssel aus der Umgebungsvariable SQUARECLOUD_API_KEY. Setze sie in dem Terminal, in dem du sie ausführst:

Client erstellen

Das erste Beispiel gibt deinen Kontonamen und die Anzahl der Apps aus, die der Schlüssel sehen kann:
Ein leerer oder nur aus Leerzeichen bestehender Schlüssel wirft im Konstruktor einen TypeError, noch vor jeder Anfrage.

Optionen

Der API-Schlüssel wird als normale Eigenschaft des Client-Objekts gespeichert. Gib den Client nicht mit console.log aus und serialisiere ihn nicht.

Module

Die einzigen Laufzeit-Exporte sind SquareCloudAPI, SquareCloudAPIError und BASE_URL. Jeder andere Export (App, RuntimeStats, ErrorCode, …) ist ein Typ:

Konventionen

Zuerst die ID, zurück kommen einfache Daten

Jede Methode nimmt die ID der Ressource als erstes Argument und gibt einfache Daten zurück (keine Klassen, kein Cache). Die Feldnamen sind die der API (created_at, version_id, lastModified, joinedAt, netIO, …), daher gilt die API-Referenz unverändert.
  • Mutationen werden zu void aufgelöst, sofern die API keine Daten zurückgibt (envs.*, deploys.setWebhook, deploys.linkGithubApp, databases.resetCredentials und die create-Methoden).
  • Ein String-Ergebnis ist nie undefined: Es ist "", wenn die API keines sendet.
  • Listen kommen vollständig in einem Aufruf: Es gibt keine Paginierung.
Die Methoden sind Arrow Functions, du kannst sie also destrukturieren:

Workspace-Apps

Jede appId akzeptiert auch die zusammengesetzte Form <appId>-<workspaceId>, um auf eine App zuzugreifen, die über einen Workspace mit dir geteilt wird. workspaces.get() und workspaces.list() geben die reinen IDs zurück; die zusammengesetzte ID baust du selbst:

IDs werden kodiert

IDs im URL-Pfad werden prozentkodiert. Eine ID, die leer, . oder .. ist, würde eine andere Route erreichen und schlägt daher lokal mit INVALID_ID (Status 0) fehl, bevor etwas gesendet wird. Workspace-Routen senden ihre IDs stattdessen im Body: Dort kommt INVALID_ID (400) vom Server.

Datumsangaben

Die Argumente start und end (siehe Netzwerk) akzeptieren einen ISO-8601-String oder ein Date. Datumsangaben in Antworten bleiben so, wie die API sie sendet (ISO-Strings oder Unix-Millisekunden, wo die API diese verwendet).

Timeouts

Ein timeoutMs von 0 oder weniger, Infinity oder >= 2^31 deaktiviert jedes Timeout, einschließlich der Mindestwerte von 120 s. Nur fünf Methoden akzeptieren ein AbortSignal: apps.create, apps.commit, files.write, apps.realtime und downloadSnapshot.
Ein abgebrochener Aufruf wird mit dem reason des Signals abgelehnt, nicht mit einem SquareCloudAPIError. Eine abgebrochene realtime()-Schleife endet einfach.

Konto

api.account.me() gibt den authentifizierten Benutzer sowie die Apps und Datenbanken zurück, die der Schlüssel sehen kann.
api.account.snapshots({ scope }) listet jeden Snapshot des Kontos auf: siehe Snapshots.

Plattformstatus

api.service.status() gibt den öffentlichen Plattformstatus zurück. Die Route benötigt keinen gültigen Schlüssel, der Client verlangt aber trotzdem einen nicht leeren.
unknown bedeutet, dass die Prüfung selbst nicht ausgeführt werden konnte: Es ist kein Beleg für einen Ausfall.

Nächste Schritte

Anwendungen verwalten

Status, Lebenszyklus, Logs und Metriken.

Fehler

Fehlerklasse, Wiederholungen und Rate Limits.

Einführung in die API

Basis-URL, Authentifizierung und eine erste Anfrage.

CLI-Schnellstart

Apps im Terminal deployen und verwalten.