---
title: Entries
description: One mood check-in or journal entry, with everything the app stored.
---

```json
{
  "date": "2026-03-01",
  "time": "21:40",
  "instant": null,
  "mood": { "level": "good", "raw": "good" },
  "sleep": null,
  "title": "Sunday",
  "note": "Long walk by the river.",
  "prompts": [{ "prompt": "What made you smile?", "answer": "The ducks." }],
  "tags": [{ "name": "walk", "group": "Hobbies" }],
  "emotions": [{ "name": "calm" }],
  "people": ["Sam"],
  "media": { "photos": 1 },
  "dropped": { "location": 1 }
}
```

Every field is written out, even when empty: `null`, `[]`, `{}` or `{ "photos": 0 }`.

| Field | Required | Purpose |
| --- | --- | --- |
| `id` | No | The app's id, for finding duplicates. |
| `date` | Yes | Local calendar day, `YYYY-MM-DD`. See [dates and time](/format/dates-and-time). |
| `time` | Yes | Local wall-clock time `HH:mm` or `HH:mm:ss`, or `null`. |
| `instant` | Yes | Absolute moment when the file stores one, else `null`. |
| `mood` | Yes | `{ level, raw, label? }` or `null`. `level` must exist in `scales.mood`. |
| `sleep` | Yes | Same shape, against `scales.sleep`. |
| `title`, `note` | Yes | Plain text or `null`. Line breaks kept. |
| `prompts` | Yes | Guided questions with answers, in source order. |
| `tags` | Yes | `{ name, group }`. `group` is the app's category, `null` when ungrouped. |
| `emotions` | Yes | `{ name }`, spelled as the app spells them. |
| `people` | Yes | Names as the app spells them. |
| `media` | Yes | `{ photos }`: counts only, files are not carried. |
| `dropped` | Yes | Source fields OWLF has no place for, with count on this entry. |

## Raw values

`mood.raw` is the value exactly as in the file: `"rad"`, `4`, `73.5`. `label` is set only when the file's label differs from the level's.

## People

A person on an entry means the person connected with them that day: met, called, texted, thought about. It does not prove they spent time together, and the connection can feel good, bad or mixed.
