Skip to main content
Cette page documente @squarecloud/api v6, une réécriture du SDK. Vous venez de la v5 ? Lisez le guide de migration v5 → v6.

Prérequis

  • Node.js 22 ou plus récent, Deno, Bun ou un runtime edge. Le SDK n’a besoin que de fetch, FormData, Blob et des web streams.
  • Une clé API (voir Clé API et scopes).
Le paquet est distribué en builds ESM et CommonJS, n’a aucune dépendance d’exécution et inclut ses propres types TypeScript : vous n’avez plus besoin de @squarecloud/api-types.

Installation

Clé API et scopes

Créez une clé sur squarecloud.app/account/security. Le SDK l’envoie telle quelle dans l’en-tête Authorization (sans préfixe Bearer). Une clé peut être limitée à des scopes (apps:read, apps:deploy, apps:control, ai:chat, …) et à des applications ou bases de données précises :
  • Un appel hors de ces limites lève une SquareCloudAPIError avec 403 MISSING_SCOPE ou RESOURCE_NOT_ALLOWED.
  • Les méthodes de liste (account.me(), apps.statusAll(), …) ne renvoient que les ressources que la clé peut voir.
  • Une clé inconnue, révoquée ou expirée donne 401 ACCESS_DENIED.
Gardez la clé sur le serveur. Le SDK fonctionne aussi dans un navigateur, mais cela exposerait la clé à chaque visiteur.
Les exemples lisent la clé depuis la variable d’environnement SQUARECLOUD_API_KEY. Définissez-la dans le terminal où vous les exécutez :

Créer le client

Le premier exemple affiche le nom de votre compte et le nombre d’applications que la clé peut voir :
Une clé vide ou composée uniquement d’espaces lève une TypeError dans le constructeur, avant toute requête.

Options

La clé API est stockée comme une propriété ordinaire de l’objet client. Ne faites pas de console.log du client et ne le sérialisez pas.

Modules

Les seuls exports d’exécution sont SquareCloudAPI, SquareCloudAPIError et BASE_URL. Tous les autres exports (App, RuntimeStats, ErrorCode, …) sont des types :

Conventions

L’identifiant d’abord, des données brutes en retour

Chaque méthode prend l’identifiant de la ressource comme premier argument et renvoie des données brutes (pas de classes, pas de cache). Les noms de champs sont ceux de l’API (created_at, version_id, lastModified, joinedAt, netIO, …), la référence de l’API s’applique donc telle quelle.
  • Les mutations se résolvent en void, sauf si l’API renvoie des données (envs.*, deploys.setWebhook, deploys.linkGithubApp, databases.resetCredentials et les méthodes create).
  • Un résultat de type chaîne n’est jamais undefined : il vaut "" quand l’API n’en envoie pas.
  • Les listes arrivent complètes en un seul appel : il n’y a pas de pagination.
Les méthodes sont des fonctions fléchées, vous pouvez donc les déstructurer :

Applications de workspace

Chaque appId accepte aussi la forme composite <appId>-<workspaceId> pour agir sur une application partagée avec vous via un workspace. workspaces.get() et workspaces.list() renvoient les identifiants bruts ; c’est à vous de construire l’identifiant composite :

Les identifiants sont encodés

Les identifiants dans le chemin de l’URL sont encodés en pourcentage. Un identifiant vide, . ou .. atteindrait une autre route : il échoue donc localement avec INVALID_ID (statut 0) avant tout envoi. Les routes de workspace envoient plutôt leurs identifiants dans le corps : là, INVALID_ID (400) vient du serveur.

Dates

Les arguments start et end (voir Réseau) acceptent une chaîne ISO 8601 ou une Date. Les dates des réponses restent telles que l’API les envoie (chaînes ISO, ou millisecondes Unix là où l’API les utilise).

Timeouts

Un timeoutMs de 0 ou moins, Infinity ou >= 2^31 désactive tous les timeouts, planchers de 120 s compris. Seules cinq méthodes acceptent un AbortSignal : apps.create, apps.commit, files.write, apps.realtime et downloadSnapshot.
Un appel annulé est rejeté avec la reason du signal, et non avec une SquareCloudAPIError. Une boucle realtime() annulée se termine simplement.

Compte

api.account.me() renvoie l’utilisateur authentifié ainsi que les applications et bases de données que la clé peut voir.
api.account.snapshots({ scope }) liste tous les snapshots du compte : voir Snapshots.

Statut de la plateforme

api.service.status() renvoie le statut public de la plateforme. La route n’exige pas de clé valide, mais le client en demande tout de même une non vide.
unknown signifie que la vérification elle-même n’a pas pu s’exécuter : ce n’est pas la preuve d’une panne.

Prochaines étapes

Gérer les applications

Statut, cycle de vie, logs et métriques.

Erreurs

Classe d’erreur, nouvelles tentatives et limites de débit.

Introduction à l'API

URL de base, authentification et une première requête.

Démarrage rapide de la CLI

Déployez et gérez vos applications depuis le terminal.