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

# Migrazione a v5

> Cosa è cambiato tra @squarecloud/api v4 e v5 — breaking change e le patch minime necessarie per l'upgrade.

## Requisiti

Invariati rispetto alla v4: **Node.js 20.0.0** o più recente, sia ESM che CJS.

## Riepilogo dei breaking change

| v4.x                                                                  | v5.x                                                                     |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `client.users.*` (proxy deprecato)                                    | Rimosso. Usa `client.user.*`                                             |
| `app.backup` / `app.backups`                                          | Rimosso. Usa `app.snapshots`                                             |
| Export `Backup`                                                       | Rimosso. Usa `Snapshot` / `DatabaseSnapshot`                             |
| `api.applications.create(file)` restituisce `{ id, name, lang, ram }` | Restituisce `{ id, name, ram, cpu, language, description?, subdomain? }` |
| `app.network.dns()` restituisce `{ ownership, ssl }`                  | Restituisce un array di record DNS                                       |

## `client.users` rimosso

A differenza della migrazione da v3 a v4, questa volta non c'è alcun proxy deprecato. `client.users` non esiste più, chiamarlo solleva un'eccezione.

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

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

## Backup rimossi

`app.backup` e `app.backups` sono stati rimossi, insieme all'export `Backup`. Gli snapshot sono l'unico percorso supportato sia per le applicazioni che per i database.

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

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

Usa la classe `Snapshot` per gli snapshot delle applicazioni e `DatabaseSnapshot` per gli snapshot dei database.

## Forma del ritorno di `api.applications.create(file)`

L'applicazione creata ora restituisce dati più ricchi su linguaggio e risorse invece della coppia piatta `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 is now an object, e.g. { name: "javascript", version: "22" }
// cpu is the allocated CPU shares (number)
// description and subdomain are only present when set in squarecloud.config
```

## Forma di `app.network.dns()`

`dns()` ora restituisce un array di record DNS invece di un singolo oggetto `{ 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 }]
```

I record `txt` coprono sia la proprietà del dominio sia la validazione SSL; il record `cname` è quello del traffico. `status` riflette lo stato di validazione (`pending`, `pending_validation`, `active` e così via).

## Altri cambiamenti

* `ApplicationLanguage` ora include `ruby`, oltre a javascript, typescript, python, java, elixir, go, rust, php, dotnet e static.
* I codici di errore sono stati standardizzati. I nuovi nomi sono esportati tramite `APIErrorCode`; i vecchi nomi restano disponibili come alias di tipo deprecati. Consulta [codici di errore](/it/sdks/js/client) per la tabella completa delle rinomine.
