# Bóvedas y páginas

Fuente: https://wire.ia.br/documentation/es/api/cofres-e-paginas

> Listar bóvedas, listar y leer páginas, crear, editar y mandar a la papelera.



Todas las rutas empiezan en `https://wire.ia.br/api/v1`. Los ejemplos usan `$PAPER_TOKEN` y `$PAPER_CUENTA` como variables de entorno.

## Listar bóvedas [#listar-bóvedas]

```http
GET /vaults
```

Devuelve solo las bóvedas que alcanza el token. Con un token normal, solo aparecen las bóvedas sincronizadas con Google Drive. Con un token seguro, aparece solo su copia.

```json
[
  { "id": "principal", "nome": "Mi cuaderno", "acesso": "editar", "copia": false },
  { "id": "cmg2k1x9a4tz", "nome": "Trabajo", "acesso": "ler", "copia": false }
]
```

La bóveda principal siempre tiene el id `principal`. Las copias para IA tienen ids con el formato `copia-` seguido de 16 caracteres.

## Listar páginas [#listar-páginas]

```http
GET /vaults/{boveda}/pages
GET /vaults/{boveda}/pages?parent={id}
GET /vaults/{boveda}/pages?parent=
```

Sin `parent`, devuelve todas las páginas y carpetas de la bóveda. Con `parent={id}`, solo las que están dentro de esa página o carpeta. Con `parent=` vacío, solo las de la raíz.

```json
[
  { "id": "pa1k2m3n4o5p", "title": "Reunión del lunes", "parentId": null, "kind": "pagina", "updatedAt": "2026-10-01T14:03:11.000Z" },
  { "id": "pb7q8r9s0t1u", "title": "Proyectos", "parentId": null, "kind": "pasta", "updatedAt": "2026-09-28T10:00:00.000Z" }
]
```

| Campo       | Qué es                                                                                   |
| ----------- | ---------------------------------------------------------------------------------------- |
| `id`        | Id de la página. Es el mismo en la app, en Drive y en la API.                            |
| `title`     | Título.                                                                                  |
| `parentId`  | Página o carpeta donde está. `null` en la raíz.                                          |
| `kind`      | `pagina` (tiene texto) o `pasta` (carpeta, solo agrupa).                                 |
| `updatedAt` | Último cambio, en ISO 8601.                                                              |
| `locked`    | `true` en páginas protegidas. Solo aparecen en la lista si el token puede ver su título. |

## Leer una página [#leer-una-página]

```http
GET /vaults/{boveda}/pages/{id}
GET /vaults/{boveda}/pages/{id}?format=md
```

```json
{
  "id": "pa1k2m3n4o5p",
  "title": "Reunión del lunes",
  "parentId": null,
  "kind": "pagina",
  "updatedAt": "2026-10-01T14:03:11.000Z",
  "markdown": "## Orden del día\n\n- [ ] Revisar presupuesto @2026-10-06 10:00\n- [x] Enviar acta",
  "props": { "tags": "trabajo" }
}
```

Con `?format=md`, la respuesta es solo el texto en Markdown (`text/markdown`), empezando por el título. Sirve para pegarlo directo en una IA.

`props` trae las propiedades del frontmatter de la página. El formato del Markdown está en [Formato de las páginas](/es/api/formato-das-paginas).

Una página protegida con contraseña siempre responde `423`.

## Crear una página o carpeta [#crear-una-página-o-carpeta]

```http
POST /vaults/{boveda}/pages
Content-Type: application/json
```

```json
{
  "title": "Ideas para el fin de semana",
  "markdown": "- Caminata el sábado\n- [ ] Comprar pan",
  "parentId": "pb7q8r9s0t1u",
  "kind": "pagina"
}
```

| Campo      | Obligatorio | Reglas                                           |
| ---------- | ----------- | ------------------------------------------------ |
| `title`    | No          | Hasta 200 caracteres. Vacío pasa a "Sin título". |
| `markdown` | No          | Hasta 1 MB. Se ignora en carpetas.               |
| `parentId` | No          | Id de una página o carpeta de la misma bóveda.   |
| `kind`     | No          | `pagina` (por defecto) o `pasta`.                |

Respuesta:

```json
{ "id": "pc2v3w4x5y6z", "title": "Ideas para el fin de semana", "kind": "pagina" }
```

Necesita el permiso **Leer y editar** en la bóveda. La página aparece en la app de la persona en la siguiente sincronización.

## Editar una página [#editar-una-página]

```http
PATCH /vaults/{boveda}/pages/{id}
Content-Type: application/json
```

Envía uno o más de estos campos:

| Campo      | Qué hace                                               |
| ---------- | ------------------------------------------------------ |
| `title`    | Cambia el título.                                      |
| `markdown` | Reemplaza todo el texto.                               |
| `append`   | Agrega texto al final, después de una línea en blanco. |

```json
{ "append": "## Actualización\n\nSe aprobó el presupuesto." }
```

Prefiere `append` siempre que puedas. No borra nada de lo que la persona escribió mientras tu programa trabajaba.

Las carpetas no tienen texto: un `PATCH` en una carpeta con `markdown` o `append` responde `400`.

## Mandar a la papelera [#mandar-a-la-papelera]

```http
DELETE /vaults/{boveda}/pages/{id}
```

```json
{ "ok": true, "lixeira": true }
```

La página va a la papelera del Google Drive de la persona, y se puede recuperar desde ahí. En copias para IA, la página queda marcada como borrada hasta que la persona la revise.

## Cuándo ve la app los cambios [#cuándo-ve-la-app-los-cambios]

Con un token normal, el cambio va directo a Google Drive. La app de la persona lo trae en la siguiente sincronización, que ocurre al abrir la app, al volver a la pestaña y cada cierto tiempo. Si la persona tocó la misma página en su dispositivo al mismo tiempo, no se pierde nada: una de las versiones pasa a ser una copia "(otra versión)".
