Ir al contenido

Servidor de API local

Mindwtr incluye un servidor de API REST local opcional para scripts e integraciones. En escritorio, se ejecuta dentro del binario de la aplicación y usa las mismas rutas de almacenamiento local que esta. El repositorio también incluye un asistente de Bun para desarrollo y scripts avanzados.


Activación en escritorio

Las compilaciones de escritorio pueden iniciar la API REST local sin ejecutar el código fuente:

  • Abre Ajustes -> Avanzado.
  • Activa Servidor de API local.
  • Mantén el puerto predeterminado 3456 o elige otro puerto de localhost.
  • Copia el token de portador generado desde la misma tarjeta de ajustes.

La aplicación solo se vincula a 127.0.0.1 y requiere Authorization: Bearer <token> en cada solicitud. Los binarios móviles no exponen una API REST local.

Asistente de desarrollo

El asistente del repositorio sigue disponible cuando quieras ejecutar la API fuera de la aplicación de escritorio o hacer que apunte a archivos explícitos.


Inicio rápido

Desde la aplicación de escritorio:

text
Settings -> Advanced -> Enable local API server

URL predeterminada:

text
http://127.0.0.1:3456

Desde la raíz del repositorio con Bun:

bash
bun install
bun run mindwtr:api -- --port 4317 --host 127.0.0.1

Opciones

OpciónValor predeterminadoDescripción
--port <n>4317Puerto del servidor
--host <host>127.0.0.1Dirección de enlace
--data <path>Valor predeterminado de la plataformaSobrescribe la ubicación de data.json
--db <path>Valor predeterminado de la plataformaSobrescribe la ubicación de mindwtr.db

Variables de entorno

VariableDescripción
MINDWTR_DATASobrescribe la ubicación de data.json (si se omite --data)
MINDWTR_DB_PATHSobrescribe la ubicación de mindwtr.db (si se omite --db)
MINDWTR_API_TOKENSolo para el asistente de Bun: si se establece, requiere Authorization: Bearer <token>

De forma predeterminada, la API resuelve tanto data.json como mindwtr.db mediante las rutas de plataforma de Mindwtr (con preferencia por los datos XDG en Linux).


Autenticación

Las solicitudes a la API local de escritorio siempre requieren el token de portador que se muestra en Ajustes -> Avanzado:

Authorization: Bearer <token>

El asistente de Bun solo requiere un token cuando se establece MINDWTR_API_TOKEN.


Endpoints

MétodoEndpointDescripción
GET/healthComprobación de estado → { ok: true }
GET/tasksEnumera las tareas
GET/tasks?status=nextFiltra por estado
GET/tasks?query=@workBusca tareas
GET/tasks?all=1Incluye las completadas/archivadas
GET/tasks?deleted=1Incluye las eliminadas de forma lógica
POST/tasksCrea una tarea
GET/tasks/:idObtiene una sola tarea
PATCH/tasks/:idActualiza una tarea
DELETE/tasks/:idElimina una tarea de forma lógica
POST/tasks/:id/completeMarca como completada
POST/tasks/:id/archiveMarca como archivada
POST/tasks/:id/restoreRestaura una tarea eliminada de forma lógica
GET/projectsEnumera los proyectos
GET/areasEnumera las áreas
GET/v1/areasAlias de compatibilidad para las áreas
GET/search?query=...Busca tareas y proyectos

Formas de las respuestas

Tarea (parcial)

json
{
  "id": "uuid",
  "title": "Task title",
  "status": "inbox",
  "projectId": "uuid",
  "dueDate": "2026-01-25T12:00:00.000Z",
  "tags": ["#work"],
  "contexts": ["@email"],
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z",
  "deletedAt": null
}

Proyecto (parcial)

json
{
  "id": "uuid",
  "title": "Project name",
  "status": "active",
  "color": "#94a3b8",
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z",
  "deletedAt": null
}

Área

json
{
  "id": "uuid",
  "name": "Area name",
  "color": "#94a3b8",
  "icon": "briefcase",
  "order": 0,
  "createdAt": "2026-01-25T10:00:00.000Z",
  "updatedAt": "2026-01-25T10:00:00.000Z"
}

Cuerpo para crear una tarea

json
{
  "input": "Call Alice",
  "title": "Alternative title",
  "props": {
    "status": "next",
    "contexts": ["@phone"],
    "tags": ["#errands"]
  }
}

En escritorio se usa title cuando está presente; de lo contrario, se usa input, y se aplican las props explícitas. El asistente de Bun ejecuta además parseQuickAdd para input.


Ejemplos

Enumerar las siguientes acciones:

bash
curl -s 'http://127.0.0.1:3456/tasks?status=next' \
  -H 'Authorization: Bearer <token>' | jq .

Crear con propiedades explícitas:

bash
curl -s -X POST 'http://127.0.0.1:3456/tasks' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"title":"Call Alice","props":{"status":"next","contexts":["@phone"],"tags":["#errands"]}}' | jq .

Completar una tarea:

bash
curl -s -X POST "http://127.0.0.1:4317/tasks/$TASK_ID/complete" | jq .

Herramienta de CLI

También está disponible una interfaz de línea de comandos más sencilla:

bash
# Add a task
bun mindwtr:cli -- add "Call mom @phone #family"

# List active tasks
bun mindwtr:cli -- list

# List with filters
bun mindwtr:cli -- list --status next --query "due:<=7d"

# Read or update a task
bun mindwtr:cli -- get <taskId>
bun mindwtr:cli -- update <taskId> '{"status":"next"}'

# Complete a task
bun mindwtr:cli -- complete <taskId>

# Archive, delete, or restore
bun mindwtr:cli -- archive <taskId>
bun mindwtr:cli -- delete <taskId>
bun mindwtr:cli -- restore <taskId>

# Search
bun mindwtr:cli -- search "@work"

# List projects
bun mindwtr:cli -- projects

Referencia de la CLI

ComandoEjemploNotas
addmindwtr:cli -- add "Call mom @phone"Usa el análisis de adición rápida
listmindwtr:cli -- list --status nextAdmite --all, --deleted, --query
getmindwtr:cli -- get <taskId>Imprime el JSON completo de la tarea
updatemindwtr:cli -- update <taskId> '{"status":"next"}'Aplica un parche JSON
searchmindwtr:cli -- search "@work due:<=7d"Busca tareas/proyectos
completemindwtr:cli -- complete <taskId>Marca la tarea como completada
archivemindwtr:cli -- archive <taskId>Marca la tarea como archivada
deletemindwtr:cli -- delete <taskId>Elimina la tarea de forma lógica
restoremindwtr:cli -- restore <taskId>Restaura una tarea eliminada
projectsmindwtr:cli -- projectsEnumera los proyectos activos

Notas de seguridad

  • El servidor está pensado para ejecutarse en 127.0.0.1 (localhost). No lo expongas públicamente salvo que comprendas los riesgos.
  • El acceso a la API de escritorio requiere el token de portador generado en Ajustes. Mantén ese token en privado.
  • Si necesitas acceso remoto al asistente de Bun, establece MINDWTR_API_TOKEN y coloca el servidor detrás de un proxy inverso autenticado.

Véase también

Mindwtr es gratuito, de código abierto y local-first.
Getting Things Done y GTD son marcas registradas de David Allen Company. Mindwtr no está afiliado, respaldado ni patrocinado por David Allen Company.