> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK JavaScript: migrar da v4 para a v5

> Atualize o @squarecloud/api da v4 para a v5: client.users e backups removidos, novo retorno de apps.create() e novo formato de dns(), com os ajustes mínimos.

## Requisitos

Inalterado em relação à v4: **Node.js 20.0.0** ou superior, tanto ESM quanto CJS.

## Resumo das breaking changes

| v4.x | v5.x |
| - | - |
| `client.users.*` (proxy depreciado) | Removido. Use `client.user.*` |
| `app.backup` / `app.backups` | Removido. Use `app.snapshots` |
| Export `Backup` | Removido. Use `Snapshot` / `DatabaseSnapshot` |
| `api.applications.create(file)` retorna `{ id, name, lang, ram }` | Retorna `{ id, name, ram, cpu, language, description?, subdomain? }` |
| `app.network.dns()` retorna `{ ownership, ssl }` | Retorna um array de registros DNS |

## `client.users` removido

Diferente da migração de v3 para v4, desta vez não há proxy depreciado. `client.users` não existe mais, chamá-lo lança um erro.

```typescript theme={"system"}
// v4
await api.users.get();

// v5
await api.user.get();
```

## Backups removidos

`app.backup` e `app.backups` foram removidos, junto com o export `Backup`. Snapshots são o único caminho suportado tanto para aplicações quanto para bancos de dados.

```typescript theme={"system"}
// v4
await app.backups.create();
await app.backup.list();

// v5
await app.snapshots.create();
await app.snapshots.list();
```

Use a classe `Snapshot` para snapshots de aplicação e `DatabaseSnapshot` para snapshots de banco de dados.

## Formato de retorno de `api.applications.create(file)`

A aplicação criada agora retorna dados mais ricos de linguagem e recursos, em vez do par plano `lang`/`ram`.

```typescript theme={"system"}
// v4
const { id, name, lang, ram } = await api.applications.create(file);

// v5
const { id, name, ram, cpu, language, description, subdomain } =
    await api.applications.create(file);

// language agora é um objeto, ex.: { name: "javascript", version: "22" }
// cpu é a CPU alocada (shares, number)
// description e subdomain só estão presentes quando definidos no squarecloud.config
```

## Formato de `app.network.dns()`

`dns()` agora retorna um array de registros DNS em vez de um único objeto `{ ownership, ssl }`.

```typescript theme={"system"}
// v4
const { ownership, ssl } = await app.network.dns();

// v5
const records = await app.network.dns();
// [{ type: "txt", name, value, status }, { type: "cname", name, value: "cname.squareweb.app", status }]
```

Os registros `txt` cobrem tanto a propriedade do domínio quanto a validação SSL; o registro `cname` é o registro de tráfego. `status` reflete o estado de validação (`pending`, `pending_validation`, `active`, e assim por diante).

## Outras mudanças

* `ApplicationLanguage` agora inclui `ruby`, além de javascript, typescript, python, java, elixir, go, rust, php, dotnet e static.
* Os códigos de erro foram padronizados. Os novos nomes são exportados através de `APIErrorCode`; os nomes antigos permanecem disponíveis como aliases de tipo depreciados. Veja [códigos de erro](/pt-br/sdks/js/client) para a tabela completa de renomeações.

## Próximos passos

<CardGroup cols={2}>
  <Card title="Cliente" icon="plug" href="/pt-br/sdks/js/client">
    Instale o SDK e crie um cliente.
  </Card>

  <Card title="Erros" icon="triangle-exclamation" href="/pt-br/sdks/js/errors">
    Classe de erro, novas tentativas e rate limits.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.