Skip to main content
Esta página documenta @squarecloud/api v6, una reescritura del SDK. ¿Vienes de la v5? Lee la guía de migración v5 → v6.

Requisitos

  • Node.js 22 o más reciente, Deno, Bun o un entorno edge. El SDK solo necesita fetch, FormData, Blob y web streams.
  • Una clave de API (consulta Clave de API y scopes).
El paquete incluye builds ESM y CommonJS, no tiene dependencias en tiempo de ejecución e incluye sus propios tipos de TypeScript: ya no necesitas @squarecloud/api-types.

Instalación

Clave de API y scopes

Crea una clave en squarecloud.app/account/security. El SDK la envía tal cual en el encabezado Authorization (sin el prefijo Bearer). Una clave puede limitarse a scopes (apps:read, apps:deploy, apps:control, ai:chat, …) y a aplicaciones o bases de datos concretas:
  • Una llamada fuera de esos límites lanza un SquareCloudAPIError con 403 MISSING_SCOPE o RESOURCE_NOT_ALLOWED.
  • Los métodos de listado (account.me(), apps.statusAll(), …) solo devuelven los recursos que la clave puede ver.
  • Una clave desconocida, revocada o caducada da 401 ACCESS_DENIED.
Mantén la clave en el servidor. El SDK también funciona en el navegador, pero eso expondría la clave a todos los visitantes.
Los ejemplos leen la clave de la variable de entorno SQUARECLOUD_API_KEY. Defínela en la terminal donde los ejecutes:

Crear el cliente

El primer ejemplo imprime el nombre de tu cuenta y el número de aplicaciones que la clave puede ver:
Una clave vacía o compuesta solo por espacios lanza un TypeError en el constructor, antes de cualquier petición.

Opciones

La clave de API se guarda como una propiedad normal del objeto cliente. No hagas console.log del cliente ni lo serialices.

Módulos

Los únicos exports en tiempo de ejecución son SquareCloudAPI, SquareCloudAPIError y BASE_URL. Todos los demás exports (App, RuntimeStats, ErrorCode, …) son tipos:

Convenciones

Primero el id, de vuelta datos planos

Todos los métodos reciben el id del recurso como primer argumento y devuelven datos planos (sin clases ni caché). Los nombres de los campos son los de la propia API (created_at, version_id, lastModified, joinedAt, netIO, …), así que la referencia de la API se aplica tal cual.
  • Las mutaciones se resuelven en void, salvo que la API devuelva datos (envs.*, deploys.setWebhook, deploys.linkGithubApp, databases.resetCredentials y los métodos create).
  • Un resultado de tipo string nunca es undefined: es "" cuando la API no envía nada.
  • Las listas llegan completas en una sola llamada: no hay paginación.
Los métodos son arrow functions, así que puedes desestructurarlos:

Aplicaciones de workspace

Todo appId acepta también la forma compuesta <appId>-<workspaceId> para actuar sobre una aplicación compartida contigo a través de un workspace. workspaces.get() y workspaces.list() devuelven ids sin procesar; el id compuesto lo construyes tú:

Los ids se codifican

Los ids en la ruta de la URL se codifican con percent-encoding. Un id vacío, . o .. llegaría a otra ruta, así que falla localmente con INVALID_ID (estado 0) antes de enviar nada. Las rutas de workspace envían sus ids en el cuerpo: ahí, el INVALID_ID (400) viene del servidor.

Fechas

Los argumentos start y end (consulta Red) aceptan un string ISO 8601 o un Date. Las fechas de las respuestas se mantienen tal como las envía la API (strings ISO, o milisegundos Unix donde la API los usa).

Timeouts

Un timeoutMs de 0 o menos, Infinity o >= 2^31 desactiva todos los timeouts, incluidos los mínimos de 120 s. Solo cinco métodos aceptan un AbortSignal: apps.create, apps.commit, files.write, apps.realtime y downloadSnapshot.
Una llamada abortada se rechaza con el reason del signal, no con un SquareCloudAPIError. Un bucle de realtime() abortado simplemente termina.

Cuenta

api.account.me() devuelve el usuario autenticado junto con las aplicaciones y bases de datos que la clave puede ver.
api.account.snapshots({ scope }) lista todos los snapshots de la cuenta: consulta Snapshots.

Estado de la plataforma

api.service.status() devuelve el estado público de la plataforma. La ruta no necesita una clave válida, pero el cliente sigue exigiendo una que no esté vacía.
unknown significa que la propia comprobación no pudo ejecutarse: no es una prueba de una caída.

Próximos pasos

Gestión de aplicaciones

Estado, ciclo de vida, logs y métricas.

Errores

Clase de error, reintentos y límites de tasa.

Introducción a la API

URL base, autenticación y una primera solicitud.

Inicio rápido de la CLI

Haz deploy y gestiona aplicaciones desde la terminal.