# API general

- Human documentation: [https://docs.univer.ai/es-ES/guides/boards/features/core/general-api](https://docs.univer.ai/es-ES/guides/boards/features/core/general-api)

- Agent Markdown: [https://docs.univer.ai/es-ES/guides/boards/features/core/general-api.md](https://docs.univer.ai/es-ES/guides/boards/features/core/general-api.md)

- Requested language: `es-ES`

- Content language: `es-ES`

- Documentation version: `1.2.0`

- Source: [boards/features/core/general-api.es-ES.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/boards/features/core/general-api.es-ES.mdx)

---

La API Facade disponible en Univer depende del tipo de unidad actual y de los complementos registrados. Esta página presenta las API comunes de una aplicación Univer Boards.

## Importación

```typescript
import { FUniver } from '@univerjs/core/facade'
import '@univerjs-pro/boards/facade'

const univerAPI = FUniver.newAPI(univer)
```

## Comandos

La mayoría de las operaciones de Univer se registran en el sistema de comandos. Esta ruta de ejecución unificada permite funciones como deshacer, rehacer y la colaboración.

> [!NOTE]
> Para conocer el diseño con más detalle, consulte el [sistema de comandos de Univer](/blog/univer#command-system).

### Escuchar comandos

Use `Event.BeforeCommandExecute` para ejecutar lógica antes de un comando y `Event.CommandExecuted` para ejecutarla cuando termine.

```typescript
const beforeDisposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, ({ id, params }) => {
  console.log('Antes del comando:', id, params)
})

const afterDisposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id, params }) => {
  console.log('Comando ejecutado:', id, params)
})
```

Para impedir que se ejecute un comando, establezca `event.cancel` en `true` desde un listener de `BeforeCommandExecute`.

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.BeforeCommandExecute, (event) => {
  if (event.id === 'board.command.set-name') {
    event.cancel = true
  }
})
```

Los listeners devuelven un objeto `IDisposable`. Destrúyalos cuando ya no sean necesarios.

```typescript
beforeDisposable.dispose()
afterDisposable.dispose()
disposable.dispose()
```

### Ejecutar comandos

Si conoce el ID de un comando y sus parámetros, ejecútelo con `FUniver.executeCommand`. Por ejemplo, este comando de Boards cambia el nombre del Board activo:

```typescript
const board = univerAPI.getActiveBoard()

if (board) {
  await univerAPI.executeCommand('board.command.set-name', {
    unitId: board.getId(),
    name: 'Notas del proyecto',
  })
}
```

## API de eventos

Los eventos expuestos a través de `univerAPI.Event` proceden del núcleo de Univer y de los complementos registrados en la aplicación. El núcleo aporta eventos compartidos de comandos y unidades, y los complementos registrados pueden ampliar esa superficie. Antes de usar un evento, compruebe que pertenece a un complemento registrado.

Consulte la [referencia de eventos de Facade](https://docs.univer.ai/es-ES/reference/facade/events.md) para ver los nombres y tipos de parámetros disponibles en la versión actual.

Use `addEvent` para suscribirse y destruya el objeto devuelto para cancelar la suscripción:

```typescript
const disposable = univerAPI.addEvent(univerAPI.Event.CommandExecuted, ({ id }) => {
  if (id === 'board.command.set-name') {
    console.log('El nombre del Board ha cambiado')
  }
})

// Elimine el listener cuando ya no sea necesario
disposable.dispose()
```

## Deshacer y rehacer

```typescript
await univerAPI.undo()
await univerAPI.redo()
```

## UI

Consulte [Componentes de la interfaz de Boards](https://docs.univer.ai/es-ES/guides/boards/ui/components.md) para ampliar los menús, la barra de herramientas y otras zonas de la interfaz de Boards.

## WebSocket

Para usar las API de WebSocket, instale `@univerjs/network`, registre `UniverNetworkPlugin` e importe su extensión Facade.

```typescript
import { UniverNetworkPlugin } from '@univerjs/network'
import '@univerjs/network/facade'

univer.registerPlugin(UniverNetworkPlugin)
```

Después puede suscribirse a los eventos del socket, enviar mensajes y cerrar la conexión:

```typescript
const socket = univerAPI.createSocket('wss://example.com/boards')

socket.open$.subscribe(() => {
  socket.send('hello')
})

socket.message$.subscribe((message) => {
  console.log('Mensaje WebSocket:', message.data)
})

socket.error$.subscribe((error) => {
  console.error('Error de WebSocket:', error)
})

socket.close()
```

## API de enumeración

Facade expone enumeraciones comunes mediante `univerAPI.Enum`:

```typescript
console.log(univerAPI.Enum.UniverInstanceType.UNIVER_BOARD)
console.log(univerAPI.Enum.BoardElementType.Shape)
```

## API de métodos de utilidad

Facade expone utilidades compartidas mediante `univerAPI.Util`:

```typescript
console.log(univerAPI.Util.tools.isString('Univer Boards')) // true
```
