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

# Migración a v5

> Qué cambió entre @squarecloud/api v4 y v5 — cambios incompatibles y los parches mínimos necesarios para actualizar.

## Requisitos

Sin cambios respecto a v4: **Node.js 20.0.0** o superior, tanto ESM como CJS.

## Resumen de cambios incompatibles

| v4.x                                                               | v5.x                                                                  |
| ------------------------------------------------------------------ | --------------------------------------------------------------------- |
| `client.users.*` (proxy obsoleto)                                  | Eliminado. Usa `client.user.*`                                        |
| `app.backup` / `app.backups`                                       | Eliminado. Usa `app.snapshots`                                        |
| Export `Backup`                                                    | Eliminado. Usa `Snapshot` / `DatabaseSnapshot`                        |
| `api.applications.create(file)` devuelve `{ id, name, lang, ram }` | Devuelve `{ id, name, ram, cpu, language, description?, subdomain? }` |
| `app.network.dns()` devuelve `{ ownership, ssl }`                  | Devuelve un array de registros DNS                                    |

## `client.users` eliminado

A diferencia de la migración de v3 a v4, esta vez no hay un proxy obsoleto. `client.users` ya no existe; llamarlo lanza un error.

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

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

## Backups eliminados

`app.backup` y `app.backups` desaparecieron, junto con el export `Backup`. Los snapshots son la única ruta soportada tanto para aplicaciones como para bases de datos.

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

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

Usa la clase `Snapshot` para snapshots de aplicaciones y `DatabaseSnapshot` para snapshots de bases de datos.

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

La aplicación creada ahora devuelve datos más ricos de lenguaje y recursos en lugar del 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 ahora es un objeto, e.g. { name: "javascript", version: "22" }
// cpu son los shares de CPU asignados (number)
// description y subdomain solo están presentes cuando se definen en squarecloud.config
```

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

`dns()` ahora devuelve un array de registros DNS en lugar de un ú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 }]
```

Los registros `txt` cubren tanto la propiedad como la validación SSL; el registro `cname` es el registro de tráfico. `status` refleja el estado de validación (`pending`, `pending_validation`, `active`, etc.).

## Otros cambios

* `ApplicationLanguage` ahora incluye `ruby`, junto a javascript, typescript, python, java, elixir, go, rust, php, dotnet y static.
* Los códigos de error se estandarizaron. Los nombres nuevos se exportan a través de `APIErrorCode`; los nombres antiguos siguen disponibles como alias de tipo obsoletos. Consulta [códigos de error](/es/sdks/js/client) para la tabla completa de renombramientos.
