---
name: list_registered_obsidian_vaults
kind: function
lang: py
domain: obsidian
version: "1.0.0"
purity: impure
signature: "def list_registered_obsidian_vaults(config_path: str = '') -> list"
description: "Lista los vaults que la app de escritorio Obsidian conoce, leyendo la clave 'vaults' de ~/.config/obsidian/obsidian.json. Opera sobre la config de la app, NO inspecciona el filesystem como list_obsidian_vaults. Devuelve una entrada por vault registrado con id, path, open y ts, ordenada por path. Lista vacia si el archivo no existe."
tags: [obsidian, vault, list, config, desktop-app, obsidian-json]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["json", "os"]
params:
  - name: config_path
    desc: "ruta al obsidian.json de la app; vacio usa ~/.config/obsidian/obsidian.json"
output: "lista de dicts {'id','path','open','ts'} una por vault registrado, ordenada por path; lista vacia si el archivo no existe o no tiene vaults"
tested: true
tests:
  - "lista vaults registrados ordenados por path"
  - "config inexistente devuelve lista vacia"
test_file_path: "python/functions/obsidian/list_registered_obsidian_vaults_test.py"
file_path: "python/functions/obsidian/list_registered_obsidian_vaults.py"
---

## Ejemplo

```python
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from obsidian import list_registered_obsidian_vaults

vaults = list_registered_obsidian_vaults(config_path="")  # ~/.config/obsidian/obsidian.json
for v in vaults:
    print(v["id"], v["open"], v["path"])
# 3f9a1c0b7e2d4a86 True  /home/enmanuel/vaults/osint
# a1b2c3d4e5f60718 False /home/enmanuel/vaults/personal
```

## Cuando usarla

Cuando necesites saber que vaults tiene dados de alta la app de escritorio Obsidian (no los que existan en disco): para auditar, desregistrar uno concreto (`unregister_obsidian_vault`), o comprobar si un vault ya esta registrado antes de abrirlo. Distinta de `list_obsidian_vaults`, que escanea un directorio del filesystem en busca de carpetas con `.obsidian/`.

## Gotchas

- **Lee la config de la app** (I/O impuro): refleja el estado del archivo `~/.config/obsidian/obsidian.json` en ese instante, no el filesystem real. Un vault listado aqui puede ya no existir en disco (entrada huerfana).
- **Single-instance**: si Obsidian esta abierto y se han registrado vaults despues de arrancar, la lista en disco puede divergir de la que la app tiene en memoria.
- El campo `ts` es epoch en milisegundos (no segundos). Convertir con `datetime.fromtimestamp(ts/1000)` si lo necesitas como fecha.
- Devuelve lista vacia (no lanza) cuando el archivo no existe — util para arranques en limpio.
