Skip to main content
Esta página documenta o @squarecloud/api v6, uma reescrita do SDK. Vindo da v5? Leia o guia de migração v5 → v6.

Requisitos

  • Node.js 22 ou superior, Deno, Bun ou um edge runtime. O SDK precisa apenas de fetch, FormData, Blob e web streams.
  • Uma chave de API (veja Chave de API e escopos).
O pacote inclui builds ESM e CommonJS, não tem nenhuma dependência em tempo de execução e traz seus próprios tipos TypeScript: você não precisa mais do @squarecloud/api-types.

Instalação

Chave de API e escopos

Crie uma chave em squarecloud.app/account/security. O SDK a envia como está no header Authorization (sem o prefixo Bearer). Uma chave pode ser limitada a escopos (apps:read, apps:deploy, apps:control, ai:chat, …) e a aplicações ou bancos de dados específicos:
  • Uma chamada fora desses limites lança um SquareCloudAPIError com 403 MISSING_SCOPE ou RESOURCE_NOT_ALLOWED.
  • Métodos de listagem (account.me(), apps.statusAll(), …) retornam apenas os recursos que a chave pode ver.
  • Uma chave desconhecida, revogada ou expirada resulta em 401 ACCESS_DENIED.
Mantenha a chave no servidor. O SDK também roda no navegador, mas isso exporia a chave a todos os visitantes.
Os exemplos leem a chave da variável de ambiente SQUARECLOUD_API_KEY. Defina-a no terminal em que você vai executá-los:

Criando o cliente

O primeiro exemplo imprime o nome da sua conta e o número de aplicações que a chave pode ver:
Uma chave vazia ou composta apenas de espaços lança um TypeError no construtor, antes de qualquer requisição.

Opções

A chave de API é armazenada como uma propriedade comum do objeto do cliente. Não use console.log nem serialize o cliente.

Módulos

Os únicos exports de runtime são SquareCloudAPI, SquareCloudAPIError e BASE_URL. Todos os outros exports (App, RuntimeStats, ErrorCode, …) são tipos:

Convenções

Ids primeiro, dados simples de volta

Todo método recebe o id do recurso como primeiro argumento e retorna dados simples (sem classes, sem cache). Os nomes dos campos são os da própria API (created_at, version_id, lastModified, joinedAt, netIO, …), então a referência da API se aplica diretamente.
  • Mutações resolvem para void, a menos que a API retorne dados (envs.*, deploys.setWebhook, deploys.linkGithubApp, databases.resetCredentials e os métodos create).
  • Um resultado string nunca é undefined: ele é "" quando a API não envia nada.
  • Listas vêm completas em uma única chamada: não há paginação.
Os métodos são arrow functions, então você pode desestruturá-los:

Aplicações de workspace

Todo appId também aceita a forma composta <appId>-<workspaceId> para atuar sobre uma aplicação compartilhada com você por meio de um workspace. workspaces.get() e workspaces.list() retornam ids brutos; você mesmo monta o id composto:

Ids são codificados

Ids no caminho da URL são codificados com percent-encoding. Um id vazio, . ou .. chegaria a uma rota diferente, então ele falha localmente com INVALID_ID (status 0) antes que qualquer coisa seja enviada. As rotas de workspace enviam seus ids no corpo: nelas, o INVALID_ID (400) vem do servidor.

Datas

Os argumentos start e end (veja Rede) aceitam uma string ISO 8601 ou um Date. As datas nas respostas permanecem como a API as envia (strings ISO, ou milissegundos Unix onde a API os usa).

Timeouts

Um timeoutMs de 0 ou menos, Infinity ou >= 2^31 desativa todos os timeouts, incluindo os mínimos de 120 s. Apenas cinco métodos aceitam um AbortSignal: apps.create, apps.commit, files.write, apps.realtime e downloadSnapshot.
Uma chamada abortada rejeita com o reason do signal, não com um SquareCloudAPIError. Um loop de realtime() abortado simplesmente termina.

Conta

api.account.me() retorna o usuário autenticado, além das aplicações e bancos de dados que a chave pode ver.
api.account.snapshots({ scope }) lista todos os snapshots da conta: veja Snapshots.

Status da plataforma

api.service.status() retorna o status público da plataforma. A rota não exige uma chave válida, mas o cliente ainda requer uma chave não vazia.
unknown significa que a própria verificação não pôde ser executada: não é evidência de uma indisponibilidade.

Próximos passos

Gerenciando aplicações

Status, ciclo de vida, logs e métricas.

Erros

Classe de erro, novas tentativas e rate limits.

Introdução à API

URL base, autenticação e uma primeira requisição.

Início rápido da CLI

Faça deploy e gerencie aplicações pelo terminal.