Obsidian Planner API

REST API para integrar el planner con herramientas externas

Autenticación

Todas las rutas (excepto esta) requieren un API key en el header:

Authorization: Bearer <tu-api-key>

Generá tu key desde la sección Ajustes en calendario.exegestion.com.

Base URL

https://api.exegestion.com

Respuestas

Todas las respuestas son JSON. Éxito: { "data": ... } — Error: { "error": "mensaje" }

Tareas

GET /tasks

Lista de tareas. Todos los filtros son opcionales.

Query paramTipoDescripción
datestringFecha exacta YYYY-MM-DD
date_fromstringDesde fecha
date_tostringHasta fecha
donebooleantrue completadas / false pendientes
prioritystringhigh · medium · low
categorystringNombre de categoría
limitnumberMáximo de resultados
GET /tasks?date=2026-03-26&done=false

POST /tasks

Crea una tarea.

{
  "text":     "Ir al gym",          // requerido
  "date":     "2026-03-26",         // requerido (YYYY-MM-DD)
  "priority": "high",               // opcional: high | medium | low  (default: medium)
  "category": "Salud"               // opcional: Personal | Trabajo | Salud | Finanzas | Otro
}

PATCH /tasks/:id

Actualiza campos de una tarea. Enviá solo los que querés cambiar.

{
  "done":     true,
  "text":     "Nuevo texto",
  "priority": "low",
  "category": "Trabajo",
  "date":     "2026-03-27"
}

DELETE /tasks/:id

Elimina una tarea. Devuelve { "data": { "deleted": "<id>" } }.

Gastos e Ingresos

GET /expenses

Lista de movimientos financieros.

Query paramTipoDescripción
datestringFecha exacta YYYY-MM-DD
date_fromstringDesde fecha
date_tostringHasta fecha
typestringincome o expense
categorystringNombre de categoría
limitnumberMáximo de resultados

POST /expenses

Registra un gasto o ingreso.

{
  "type":        "expense",         // requerido: "income" o "expense"
  "amount":      1500,              // requerido (número positivo)
  "description": "Almuerzo",        // requerido
  "date":        "2026-03-26",      // requerido (YYYY-MM-DD)
  "category":    "Alimentación"     // opcional (default: "Otro")
}

PATCH /expenses/:id

Actualiza campos de un movimiento. Enviá solo los que querés cambiar.

{
  "type":        "income",
  "amount":      2000,
  "description": "Nuevo texto",
  "category":    "Salario",
  "date":        "2026-03-27"
}

DELETE /expenses/:id

Elimina un movimiento financiero.

Presupuesto

GET /budget/items

Lista todos los ítems de presupuesto. Filtro opcional por categoría.

Query paramTipoDescripción
categorystringFiltra por nombre de categoría (ej. HOGAR)

POST /budget/items

Crea un ítem de presupuesto.

{
  "category":       "HOGAR",    // requerido
  "name":           "Alquiler", // requerido
  "default_amount": 50000,      // opcional (default: 0)
  "cat_color":      "blue",     // opcional (default: "blue")
  "sort_order":     0           // opcional (default: 0)
}

PATCH /budget/items/:id

Actualiza campos de un ítem. Enviá solo los que querés cambiar.

{
  "category":       "SERVICIOS",
  "name":           "Internet",
  "default_amount": 8000,
  "cat_color":      "amber",
  "sort_order":     1
}

DELETE /budget/items/:id

Elimina un ítem de presupuesto.

PATCH /budget/categories/:name

Renombra o recolorea una categoría completa (actualiza todos sus ítems). El :name va URL-encoded.

{
  "name":  "SERVICIOS",  // opcional: nuevo nombre de la categoría
  "color": "sage"        // opcional: nuevo color
}

DELETE /budget/categories/:name

Elimina todos los ítems de una categoría. El :name va URL-encoded.

GET /budget/entries?month=YYYY-MM

Lista las entradas de presupuesto del mes indicado. El parámetro month es requerido.

GET /budget/entries?month=2026-04

POST /budget/entries

Crea o actualiza (upsert) una entrada de presupuesto para un ítem en un mes. Si ya existe la combinación item_id + month, la sobreescribe.

{
  "item_id": "uuid-del-item",  // requerido
  "month":   "2026-04",        // requerido (YYYY-MM)
  "amount":  50000,            // opcional: monto presupuestado del mes
  "paid":    10000,            // opcional: monto ya pagado
  "notes":   "Pagado el 5"    // opcional
}

GET /budget/income?month=YYYY-MM

Lista los ingresos del mes indicado. El parámetro month es requerido.

POST /budget/income

Registra un ingreso para un mes.

{
  "month":      "2026-04",   // requerido (YYYY-MM)
  "source":     "Trabajo",   // requerido
  "amount":     100000,      // requerido
  "notes":      "",          // opcional
  "sort_order": 0            // opcional (default: 0)
}

PATCH /budget/income/:id

Actualiza un ingreso. Campos permitidos: source, amount, notes.

DELETE /budget/income/:id

Elimina un ingreso.

GET /budget/summary?month=YYYY-MM

Resumen completo del presupuesto del mes: ingresos, totales presupuestados/pagados, pendientes y saldo. Los ítems sin entrada usan default_amount.

{
  "data": {
    "month": "2026-04",
    "income": {
      "total": 100000,
      "items": [{ "id": "...", "source": "Trabajo", "amount": 100000, "notes": "" }]
    },
    "budget": {
      "total_budgeted": 80000,
      "total_paid": 25000,
      "pending": 55000,
      "balance": 75000,
      "estimated_balance": 20000,
      "categories": [
        {
          "name": "HOGAR",
          "color": "blue",
          "total_budgeted": 50000,
          "total_paid": 10000,
          "items": [
            { "id": "...", "name": "Alquiler", "default_amount": 50000, "budgeted": 50000, "paid": 10000, "notes": "" }
          ]
        }
      ]
    }
  }
}

Resúmenes

GET /summary/today

Resumen del día de hoy: tareas y finanzas.

{
  "data": {
    "date": "2026-03-26",
    "tasks":    { "total": 3, "pending": 1, "done": 2, "items": [...] },
    "finances": { "income": 50000, "expense": 1500, "balance": 48500, "items": [...] }
  }
}

Ejemplo rápido

curl https://api.exegestion.com/tasks?done=false \
  -H "Authorization: Bearer tu-api-key"
curl -X POST https://api.exegestion.com/tasks \
  -H "Authorization: Bearer tu-api-key" \
  -H "Content-Type: application/json" \
  -d '{"text":"Estudiar inglés","date":"2026-03-26","priority":"high"}'