> ## 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.

# Migrando para a v5

> O que mudou entre o @squarecloud/api v4 e v5 — breaking changes e os ajustes mínimos para atualizar.

## 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={null}
// 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={null}
// 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={null}
// 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={null}
// 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.
