La forma exacta de cada objeto que devuelve la API — campos, tipos y notas.
Los nombres de campo son los mismos que las columnas reales de SQLite (app/db.py) — lo que ves aquí es lo que te devuelve la API, sin una capa de serialización intermedia que pueda renombrar nada. Todos los timestamps son ISO 8601 en hora local del servidor, sin offset (ej. 2026-07-10T14:32:05), nunca UTC ni con zona horaria explícita.
Categoria (menú)
Campo
Tipo
Notas
id
integer
nombre
string
Único por usuario.
color
string | null
Código de color hex, opcional.
creada_en
string (ISO 8601)
papelera_en
string (ISO 8601) | null
No null si está en la papelera — la API nunca devuelve categorías en la papelera desde /categorias, solo desde /papelera.
orden
integer | null
Posición manual (↑/↓ en el panel de inicio); null = orden alfabético por defecto.
Nota
Campo
Tipo
Notas
id
integer
texto
string
categoria_id
integer | null
tarea_id
integer | null
Si la nota quedó asociada a una tarea con duración concreta — la API REST actual no tiene forma de fijar este campo al crear (siempre null vía POST /notas), pero si existe se devuelve igualmente.
creada_en
string (ISO 8601)
Con segundos — es el timestamp que ordena el registro cronológico.
papelera_en
string (ISO 8601) | null
Tarea (con duración)
No confundir con TareaOutlook (siguiente sección) — son dos modelos independientes, sin relación entre sí, pensados para cosas distintas: esta es la tarea con cronómetro del registro de actividad; la otra es una lista de tareas al estilo Microsoft Outlook To-Do.
Campo
Tipo
Notas
id
integer
nombre
string
categoria_id
integer
Obligatorio — a diferencia de Nota, una tarea con duración siempre pertenece a un menú.
Calculado al finalizar, descontando el tiempo en pausa — null mientras no está finalizada, y siempre null en tipo instantanea (por diseño, no por estar pendiente).
papelera_en
string (ISO 8601) | null
TareaOutlook
Nombres de campo calcados del modelo de objetos de Outlook/iCalendar (VTODO, RFC 5545) a propósito, para que el mapeo de import/export .ics/.csv sea 1:1 sin traducir nombres.
Texto libre — no es una Categoria/menú, es la categoría de color propia de Outlook.
outlook_entry_id
string | null
EntryID de Outlook, para reconciliar en reimportaciones repetidas del mismo archivo.
creada_en / actualizada_en
string (ISO 8601)
papelera_en
string (ISO 8601) | null
CuentaCorreo
Campo
Tipo
Notas
id
integer
nombre
string
Nombre visible de la cuenta, elegido por el usuario.
protocolo
"imap" | "pop3"
host / puerto / usa_tls
string / integer / boolean
Conexión de recepción.
usuario
string
Usuario de login del servidor de correo (no el id local).
smtp_host / smtp_puerto / smtp_tls
string | null / integer | null / boolean
Solo si la cuenta tiene envío configurado.
creada_en / ultima_sincronizacion
string (ISO 8601) | null
firma_html, firma_en_nuevos, firma_en_respuestas
string | null, boolean, boolean
La contraseña de la cuenta de correo nunca aparece en la respuesta de la API — no se guarda en SQLite en absoluto, vive en el almacén de credenciales del sistema operativo (keyring), bajo una clave interna por cuenta.
MensajeCorreo
Campo
Tipo
Notas
id
integer
Id local (caché) — no es el uid IMAP.
cuenta_id
integer
carpeta
string
Por defecto INBOX.
uid
string
Identificador IMAP/POP3 real del mensaje en el servidor.
asunto, remitente, destinatarios, cc
string | null
fecha
string (ISO 8601) | null
Fecha del mensaje según su cabecera, no la de sincronización.
cuerpo_texto / cuerpo_html
string | null
message_id
string | null
Cabecera Message-ID, para hilos (In-Reply-To/References) al responder.
leido, destacado
boolean
categoria_id
integer | null
Categoría de color propia de Guilda Work — nunca se sincroniza con el servidor de correo.
fecha_aviso, pospuesto_hasta
string (ISO 8601) | null
El Cco (bcc) de un mensaje recibido nunca aparece aquí — por diseño del propio correo electrónico, nadie salvo el remitente original sabe quién iba en copia oculta; no es una limitación de Guilda Work, ningún cliente de correo puede mostrar ese dato en un mensaje recibido.