{"what":"The Vitality Dictionary: the plain-English meaning of every field Vitality serves. No naked numbers.","shelves":["briefing","sleep","recovery","workouts","activity","body","body_history","profile","trends","events","code","tasks","coding","notes","weather"],"dictionary":{"common":{"provider":{"meaning":"which connected device/app supplied this record (informational only)"},"external_id":{"meaning":"stable id of this record, for de-duplication by consumers"},"synced_at":{"meaning":"when Vitality last pulled this record from the device, ISO 8601 UTC"},"started_at":{"meaning":"when this record began, ISO 8601 UTC"},"ended_at":{"meaning":"when this record ended, ISO 8601 UTC"},"timezone_offset":{"meaning":"the member’s local UTC offset when this was recorded (e.g. \"-05:00\") — times are stored in UTC, so add this to render their local clock; null when the source did not supply it"},"about":{"meaning":"a plain-language preamble describing what this Vitality feed is and how to use it (cross-reference across the member’s own sources); identical on every response"},"generated_at":{"meaning":"the exact moment Vitality produced this response, ISO 8601 UTC — compare timestamps to this, never guess the current time"},"freshness":{"meaning":"per-device sync stamps: synced_at (absolute) + minutes_before_this_response (server-computed gap)"},"minutes_before_this_response":{"meaning":"how many minutes before generated_at this device last synced — precomputed by the server so nothing has to know the current time","unit":"minutes"},"days":{"meaning":"how many days of history this response covers"},"briefing":{"meaning":"a short plain-words snapshot of this member right now; values arrive pre-explained"},"avg_heart_rate":{"meaning":"average heart rate over the period","unit":"beats per minute"},"max_heart_rate":{"meaning":"highest heart rate over the period","unit":"beats per minute"},"calories":{"meaning":"energy burned","unit":"kilocalories"}},"sleep":{"duration_minutes":{"meaning":"actual time asleep (excludes time awake in bed)","unit":"minutes"},"time_in_bed_minutes":{"meaning":"total time in bed, asleep or not","unit":"minutes"},"efficiency_pct":{"meaning":"share of time in bed actually spent asleep","unit":"percent","range":"0-100","direction":"higher is better"},"score":{"meaning":"overall sleep quality for the night as scored by the member’s device","range":"0-100","direction":"higher is better"},"is_nap":{"meaning":"true when this session is a nap rather than a main night sleep"},"stages":{"meaning":"minutes spent in each sleep stage: light_min, deep_min, rem_min, awake_min"},"light_min":{"meaning":"light sleep (body restoring, easy to wake)","unit":"minutes"},"deep_min":{"meaning":"deep sleep (physical repair; hardest to wake from)","unit":"minutes"},"rem_min":{"meaning":"REM sleep (dreaming; mental recovery)","unit":"minutes"},"awake_min":{"meaning":"time awake during the sleep session","unit":"minutes"},"respiratory_rate":{"meaning":"breaths per minute while asleep","unit":"breaths per minute"},"consistency_pct":{"meaning":"how similar recent bed/wake times are to each other","unit":"percent","range":"0-100","direction":"higher is better"},"disturbance_count":{"meaning":"number of times sleep was disturbed during the session"},"sleep_cycle_count":{"meaning":"number of full sleep cycles completed"},"sleep_need_minutes":{"meaning":"the BASELINE sleep need per the device’s model, before debt, strain, and nap adjustments; the whole-night need is sleep_need_total_minutes","unit":"minutes"},"sleep_debt_minutes":{"meaning":"accumulated shortfall versus sleep need","unit":"minutes","direction":"lower is better"},"sleep_need_total_minutes":{"meaning":"the total sleep the body needed that night: baseline + debt + recent-strain extra + nap credit (the nap part is typically negative); null when the device did not score the night","unit":"minutes"},"sleep_no_data_minutes":{"meaning":"minutes inside the sleep window where the sensor recorded nothing (strap off, dead battery); never counted as sleep; null when the device did not report it","unit":"minutes"},"score_state":{"meaning":"the device’s own verdict on this record: SCORED is final, PENDING_SCORE and UNSCORABLE are provisional; treat any non-SCORED record’s numbers as provisional, never final","range":"SCORED | PENDING_SCORE | UNSCORABLE"},"sleep_latency_minutes":{"meaning":"how long it took to fall asleep after getting into bed","unit":"minutes","direction":"lower usually means falling asleep more easily"},"wakeup_latency_minutes":{"meaning":"how long the member stayed in bed after waking up for the last time","unit":"minutes"},"waso_minutes":{"meaning":"WAKE AFTER SLEEP ONSET: time spent awake AFTER first falling asleep, so it counts night-time waking only and excludes the settling-in and the lie-in (that wider total is awake_min)","unit":"minutes","direction":"lower means a less broken night"},"out_of_bed_count":{"meaning":"how many times the member actually got out of bed during the night: a COUNT, distinct from disturbance_count, which counts waking without leaving the bed"},"rem_episode_count":{"meaning":"how many separate REM (dreaming) phases the night contained: a COUNT of episodes, which is NOT the same as a full sleep cycle count (see sleep_cycle_count)"},"avg_heart_rate":{"meaning":"average heart rate across the night","unit":"beats per minute"},"min_heart_rate":{"meaning":"lowest heart rate reached during the night, the closest thing to an overnight resting heart rate","unit":"beats per minute","direction":"lower is generally better"},"max_heart_rate":{"meaning":"highest heart rate reached during the night","unit":"beats per minute"},"respiratory_rate_min":{"meaning":"slowest breathing rate during the night","unit":"breaths per minute"},"respiratory_rate_max":{"meaning":"fastest breathing rate during the night","unit":"breaths per minute"},"hrv_start_ms":{"meaning":"heart-rate variability (RMSSD) averaged over the START of the night, when the body is settling","unit":"milliseconds","direction":"higher generally means more recovered"},"hrv_end_ms":{"meaning":"heart-rate variability (RMSSD) averaged over the END of the night; compare with hrv_start_ms to see which way the night went","unit":"milliseconds","direction":"higher generally means more recovered"},"breathing_disturbance_intensity":{"meaning":"how disturbed breathing was during the night, as the device’s own intensity figure; a relative signal, not a medical diagnosis","direction":"lower is calmer breathing"},"snoring_minutes":{"meaning":"total time spent snoring during the night","unit":"minutes"},"snoring_episode_count":{"meaning":"how many snoring episodes of at least a minute the night contained: a COUNT"},"apnea_hypopnea_index":{"meaning":"medical-grade apnea/hypopnea index: the average number of breathing pauses and shallow-breathing episodes per hour of sleep. Only present when the member owns hardware certified for it, so it is usually null. A measurement, never a diagnosis","unit":"events per hour","direction":"lower is better"}},"recovery":{"scored_at":{"meaning":"the day this readiness score applies to, ISO 8601 UTC"},"score":{"meaning":"how recovered the body is today: under 34 low, 34-66 moderate, 67+ high (bands are the device maker’s own)","range":"0-100","direction":"higher is better"},"hrv_ms":{"meaning":"heart-rate variability during sleep — a key recovery signal","unit":"milliseconds","direction":"higher is better"},"resting_heart_rate":{"meaning":"lowest stable heart rate during sleep","unit":"beats per minute","direction":"lower is generally better"},"spo2_pct":{"meaning":"blood oxygen saturation during sleep","unit":"percent","range":"0-100"},"skin_temp_c":{"meaning":"skin temperature reading (some devices report deviation from personal baseline rather than absolute)","unit":"degrees Celsius"},"user_calibrating":{"meaning":"true while the device is still learning this member’s baseline — treat scores as provisional"},"systolic_bp_mmhg":{"meaning":"blood pressure while the heart beats (the upper number), from a blood-pressure cuff","unit":"millimetres of mercury (mmHg)"},"diastolic_bp_mmhg":{"meaning":"blood pressure while the heart rests between beats (the lower number), from a blood-pressure cuff","unit":"millimetres of mercury (mmHg)"},"pulse_bpm":{"meaning":"heart rate at the MOMENT a reading was taken (usually alongside a blood-pressure measurement). This is a spot reading, NOT a resting heart rate: compare it with resting_heart_rate, never substitute one for the other","unit":"beats per minute"},"body_temp_c":{"meaning":"body temperature from a thermometer (distinct from skin_temp_c, which some wearables report as a deviation from the member’s own baseline)","unit":"degrees Celsius"},"measured_at":{"meaning":"when these vitals were actually measured, ISO 8601 UTC (distinct from synced_at, when Vitality pulled them)"}},"workouts":{"sport":{"meaning":"the movement/activity name (e.g. running, weightlifting)"},"strain":{"meaning":"how hard this workout was on the body, on a 0-21 exertion scale: under 10 light, 10-13.9 moderate, 14-17.9 hard, 18+ all-out","range":"0-21","direction":"higher is harder"},"distance_meters":{"meaning":"distance covered","unit":"meters"},"percent_recorded":{"meaning":"share of the workout with good sensor signal","unit":"percent","range":"0-100"},"altitude_gain_meters":{"meaning":"total climb during the workout","unit":"meters"},"altitude_change_meters":{"meaning":"net altitude change start to finish","unit":"meters"},"hr_zones":{"meaning":"minutes spent in each heart-rate zone during the workout, keyed lowest zone first. How MANY zones exist is the device’s own choice (some report four, some six), so read the keys present rather than assuming a fixed count","unit":"minutes per zone"},"min_heart_rate":{"meaning":"lowest heart rate during the workout, the session floor beside avg and max","unit":"beats per minute"},"intensity":{"meaning":"the device’s OWN effort figure for this session. It is NOT the 0-21 strain scale (see `strain`): the two come from different devices and different models, so compare each against its own history, never against the other"},"paused_minutes":{"meaning":"minutes the device automatically paused mid-session (waiting at a crossing, resting between sets), so a 45-minute session that was really 38 minutes of moving is honest about the gap","unit":"minutes"}},"activity":{"day_strain":{"meaning":"how hard the WHOLE day was on the body (all movement, not just workouts), on a 0-21 scale: under 10 light, 10-13.9 moderate, 14-17.9 hard, 18+ all-out","range":"0-21","direction":"higher is harder"},"kilojoule":{"meaning":"total day energy output","unit":"kilojoules"},"steps":{"meaning":"how many steps the member took that day: a COUNT for the whole day","unit":"steps","direction":"higher means more walking"},"distance_meters":{"meaning":"how far the member travelled that day on foot","unit":"meters"},"floors_climbed":{"meaning":"how many floors the member climbed that day, counted as FLOORS (not a height in meters)","unit":"floors"},"active_minutes":{"meaning":"time spent in moderate or intense movement that day (the two combined; light pottering about is not counted)","unit":"minutes","direction":"higher means a more active day"},"soft_activity_minutes":{"meaning":"time spent in LIGHT movement that day (gentle walking and similar)","unit":"minutes"},"moderate_activity_minutes":{"meaning":"time spent in MODERATE movement that day (brisk walking and similar)","unit":"minutes"},"intense_activity_minutes":{"meaning":"time spent in INTENSE movement that day (running, hard effort)","unit":"minutes"},"active_calories":{"meaning":"energy burned by MOVEMENT that day only, excluding the at-rest burn; the `calories` field is the whole day (movement plus at-rest) so active_calories is always the smaller of the two","unit":"kilocalories"},"min_heart_rate":{"meaning":"lowest heart rate recorded across the day","unit":"beats per minute"},"hr_zones":{"meaning":"minutes spent in each heart-rate zone across the WHOLE day (zone map keyed by zone name, lowest zone first); the same shape the workouts shelf uses, but for the day rather than one workout. How many zones a device reports is the device’s own choice, so read the keys present rather than assuming a fixed count","unit":"minutes per zone"}},"body":{"height_meters":{"meaning":"the member’s standing height","unit":"meters"},"weight_kilograms":{"meaning":"the member’s body weight","unit":"kilograms"},"max_heart_rate":{"meaning":"estimated maximum heart rate","unit":"beats per minute"},"fat_ratio_pct":{"meaning":"body fat as a PERCENTAGE of total body weight (e.g. 18.5 means 18.5%)","unit":"percent","range":"typically 5-50","direction":"lower is generally leaner, within a healthy range"},"fat_mass_kg":{"meaning":"the weight of the member’s body fat","unit":"kilograms","direction":"part of total weight; read alongside fat_ratio_pct"},"fat_free_mass_kg":{"meaning":"total body weight EXCLUDING fat (muscle, bone, organs, water combined)","unit":"kilograms"},"muscle_mass_kg":{"meaning":"the weight of the member’s muscle","unit":"kilograms","direction":"higher generally means more muscle"},"hydration_kg":{"meaning":"total body WATER measured as a MASS (kilograms), not a percentage","unit":"kilograms"},"bone_mass_kg":{"meaning":"the weight of the member’s bone","unit":"kilograms"},"weighed_at":{"meaning":"when this body measurement was actually taken on the scale, ISO 8601 UTC (distinct from synced_at, when Vitality pulled it)"},"visceral_fat_index":{"meaning":"fat stored around the organs, as the scale’s own INDEX with no unit (it is not kilograms and not a percentage), so read it against the member’s own history rather than an absolute target","direction":"lower is generally better"},"basal_metabolic_rate":{"meaning":"calories the body burns at complete rest over a day, before any movement is added","unit":"kilocalories per day"},"metabolic_age_years":{"meaning":"the age the scale’s model equates this member’s metabolism to. An estimate from a consumer device, never a clinical finding","unit":"years","direction":"lower than the member’s real age is the better direction"},"vo2_max":{"meaning":"estimated maximum oxygen the body can use during hard exercise, the standard aerobic-fitness figure","unit":"millilitres of oxygen per kilogram per minute","direction":"higher means more aerobically fit"},"vascular_age_years":{"meaning":"the age the device’s model equates this member’s arterial stiffness to. An estimate from a consumer device, never a clinical finding","unit":"years","direction":"lower than the member’s real age is the better direction"},"pulse_wave_velocity":{"meaning":"how fast the pulse wave travels along the arteries, a stiffness signal","unit":"metres per second","direction":"lower generally means more elastic arteries"},"extracellular_water_kg":{"meaning":"body water held OUTSIDE the cells, as a mass","unit":"kilograms"},"intracellular_water_kg":{"meaning":"body water held INSIDE the cells, as a mass","unit":"kilograms"},"segment_masses":{"meaning":"per-limb composition from a segmental scale: a map of measurement name (fat_free_mass_kg, fat_mass_kg, muscle_mass_kg) to KILOGRAMS. Which segments a device reports varies by model, so read the keys present; null on a scale that does not measure limbs separately","unit":"kilograms per segment"}},"body_history":{"height_meters":{"meaning":"the member’s standing height","unit":"meters"},"weight_kilograms":{"meaning":"the member’s body weight","unit":"kilograms"},"max_heart_rate":{"meaning":"estimated maximum heart rate","unit":"beats per minute"},"fat_ratio_pct":{"meaning":"body fat as a PERCENTAGE of total body weight (e.g. 18.5 means 18.5%)","unit":"percent","range":"typically 5-50","direction":"lower is generally leaner, within a healthy range"},"fat_mass_kg":{"meaning":"the weight of the member’s body fat","unit":"kilograms","direction":"part of total weight; read alongside fat_ratio_pct"},"fat_free_mass_kg":{"meaning":"total body weight EXCLUDING fat (muscle, bone, organs, water combined)","unit":"kilograms"},"muscle_mass_kg":{"meaning":"the weight of the member’s muscle","unit":"kilograms","direction":"higher generally means more muscle"},"hydration_kg":{"meaning":"total body WATER measured as a MASS (kilograms), not a percentage","unit":"kilograms"},"bone_mass_kg":{"meaning":"the weight of the member’s bone","unit":"kilograms"},"weighed_at":{"meaning":"when this body measurement was actually taken on the scale, ISO 8601 UTC (distinct from synced_at, when Vitality pulled it)"},"visceral_fat_index":{"meaning":"fat stored around the organs, as the scale’s own INDEX with no unit (it is not kilograms and not a percentage), so read it against the member’s own history rather than an absolute target","direction":"lower is generally better"},"basal_metabolic_rate":{"meaning":"calories the body burns at complete rest over a day, before any movement is added","unit":"kilocalories per day"},"metabolic_age_years":{"meaning":"the age the scale’s model equates this member’s metabolism to. An estimate from a consumer device, never a clinical finding","unit":"years","direction":"lower than the member’s real age is the better direction"},"vo2_max":{"meaning":"estimated maximum oxygen the body can use during hard exercise, the standard aerobic-fitness figure","unit":"millilitres of oxygen per kilogram per minute","direction":"higher means more aerobically fit"},"vascular_age_years":{"meaning":"the age the device’s model equates this member’s arterial stiffness to. An estimate from a consumer device, never a clinical finding","unit":"years","direction":"lower than the member’s real age is the better direction"},"pulse_wave_velocity":{"meaning":"how fast the pulse wave travels along the arteries, a stiffness signal","unit":"metres per second","direction":"lower generally means more elastic arteries"},"extracellular_water_kg":{"meaning":"body water held OUTSIDE the cells, as a mass","unit":"kilograms"},"intracellular_water_kg":{"meaning":"body water held INSIDE the cells, as a mass","unit":"kilograms"},"segment_masses":{"meaning":"per-limb composition from a segmental scale: a map of measurement name (fat_free_mass_kg, fat_mass_kg, muscle_mass_kg) to KILOGRAMS. Which segments a device reports varies by model, so read the keys present; null on a scale that does not measure limbs separately","unit":"kilograms per segment"},"measured_on":{"meaning":"the UTC day this measurement was taken (YYYY-MM-DD), one row per measured day; days with no measurement have no row and are never filled in"},"measured_at":{"meaning":"the exact moment of the freshest measurement that day, ISO 8601 UTC (distinct from synced_at, when Vitality pulled it)"}},"profile":{"name":{"meaning":"the member’s name as their device reports it"},"connections":{"meaning":"the member’s connected devices with status and last sync time"},"status":{"meaning":"connection state of a device (connected / revoked)"},"connected_at":{"meaning":"when this device was first connected, ISO 8601 UTC"},"last_synced_at":{"meaning":"when this device last delivered data, ISO 8601 UTC"},"note":{"meaning":"a plain-words reminder of how Vitality serves this data"}},"trends":{"this_week":{"meaning":"averages/totals for the last 7 days"},"last_week":{"meaning":"averages/totals for the 7 days before that"},"week_over_week_change":{"meaning":"this week minus last week for each metric (positive = up)"},"avg_score":{"meaning":"average of the daily scores in the window","range":"0-100"},"avg_duration_minutes":{"meaning":"average nightly sleep duration","unit":"minutes"},"nights":{"meaning":"number of main sleeps (naps excluded) in the window"},"avg_hrv_ms":{"meaning":"average heart-rate variability","unit":"milliseconds","direction":"higher is better"},"avg_resting_heart_rate":{"meaning":"average resting heart rate","unit":"beats per minute"},"count":{"meaning":"number of workouts in the window"},"total_strain":{"meaning":"summed workout exertion for the window (each workout scored 0-21)"},"total_calories":{"meaning":"summed workout energy","unit":"kilocalories"},"avg_day_strain":{"meaning":"average whole-day exertion","range":"0-21","direction":"higher is harder"},"avg_calories":{"meaning":"average daily energy burned","unit":"kilocalories"},"sleep_score":{"meaning":"change in average sleep score vs last week"},"sleep_duration_minutes":{"meaning":"change in average sleep duration vs last week","unit":"minutes"},"recovery_score":{"meaning":"change in average recovery score vs last week"},"hrv_ms":{"meaning":"change in average HRV vs last week","unit":"milliseconds"},"resting_heart_rate":{"meaning":"change in average resting heart rate vs last week","unit":"beats per minute"},"workout_count":{"meaning":"change in number of workouts vs last week"},"day_strain":{"meaning":"change in average day exertion vs last week (0-21 scale)"}},"briefing":{"briefing":{"meaning":"a short plain-words snapshot of this member right now; values arrive pre-explained"}},"events":{"starts_at":{"meaning":"when this event begins, ISO 8601 UTC, on the same day-spine as every other record"},"ends_at":{"meaning":"when this event ends, ISO 8601 UTC; null for all-day events"},"all_day":{"meaning":"true when the event spans the whole day with no set start time"},"title":{"meaning":"the event’s name as the member wrote it, stored as-is (a fact)"},"status":{"meaning":"the event’s state: confirmed, tentative, or cancelled"},"attendee_count":{"meaning":"how many people are on the invite: a COUNT only, never their names or emails"},"is_organizer":{"meaning":"true when this member created/owns the event"},"calendar_id":{"meaning":"which of the member’s calendars this event lives on (e.g. primary)"},"event_type":{"meaning":"what KIND of time this event is, per the calendar itself: default (a normal event), focusTime (a focus block), outOfOffice (time away), workingLocation, birthday, or fromGmail — a category only, never a name","range":"default | focusTime | outOfOffice | workingLocation | birthday | fromGmail"},"description":{"meaning":"the event’s own notes/agenda exactly as written on the calendar, served verbatim; null when the event has none"},"location":{"meaning":"where the event happens, exactly as written on the event (an address, a room, a place name); null when unset"},"shows_as_busy":{"meaning":"true when this event blocks the member’s calendar (shows as busy), false when the member marked it free, free events (birthdays, reminders) do not really occupy the day"},"my_response_status":{"meaning":"the MEMBER’S OWN reply to this invite, accepted, declined, tentative, or needsAction (not answered yet); null when the event has no invite list. Never anyone else’s reply","range":"accepted | declined | tentative | needsAction"},"recurring_event_id":{"meaning":"for an instance of a repeating event, the id of its parent series, rows sharing this id are the same recurring commitment; null for one-off events"},"created_at":{"meaning":"when this event was first created on the calendar, ISO 8601 UTC; null when the provider omits it"},"updated_at":{"meaning":"when this event last changed on the calendar (moved, renamed, re-invited), ISO 8601 UTC; null when the provider omits it"},"is_video_call":{"meaning":"true when the event carries a video-conference entry (a joinable video call), false when it does not"},"video_platform":{"meaning":"the video-call product’s NAME only (e.g. Google Meet, Zoom), never links, meeting codes, or dial-in numbers; null when there is no conference or the platform is unnamed"},"working_location":{"meaning":"for a workingLocation event: where the member set themselves working that day, \"home\", or their own office/custom label in their own words; null on every other kind of event"},"event_type_detail":{"meaning":"extra facts for special event kinds (focus blocks and out-of-office), as a small map: auto_decline_mode (whether conflicting invitations auto-decline), chat_status (e.g. doNotDisturb during focus time), and decline_message (the member’s own auto-reply text); null for normal events"}},"code":{"started_at":{"meaning":"the day these contributions happened, pinned to 00:00 UTC on the shared day-spine"},"contribution_count":{"meaning":"total GitHub contributions (commits, pull requests, reviews, issues) the member made that day: a COUNT only, never repository names or code content","unit":"contributions","direction":"higher means more coding activity"},"weekday":{"meaning":"day of the week for this row, 0 is Sunday through 6 is Saturday","range":"0-6"},"window_days":{"meaning":"the trailing window, in days, that the contribution type-split counts below cover (e.g. 30 means the last 30 days)","unit":"days"},"commits":{"meaning":"number of commit contributions the member made in the window: a COUNT only, never repository names or commit messages","unit":"commits","direction":"higher means more commits"},"pull_requests":{"meaning":"number of pull requests the member OPENED in the window: a COUNT only","unit":"pull requests"},"reviews":{"meaning":"number of pull request reviews the member LEFT in the window: a COUNT only","unit":"reviews"},"issues":{"meaning":"number of issues the member OPENED in the window: a COUNT only","unit":"issues"},"repos_created":{"meaning":"number of repositories the member created in the window: a COUNT only, never repository names","unit":"repositories"},"repos_contributed":{"meaning":"number of DISTINCT repositories the member committed to in the window, a breadth signal (one project heads-down vs many projects touched): a COUNT only, never repository names","unit":"repositories"},"restricted_count":{"meaning":"count of PRIVATE contributions the member chose to share as an anonymized number; viewer-relative, so usually 0 from the member’s own token because their private activity folds into the typed counts above; a COUNT only, never repo names","unit":"contributions"},"blended_total":{"meaning":"the contribution calendar’s total for the window (all types blended together); it does NOT equal the sum of commits+pull_requests+reviews+issues because the calendar mixes types and counts repositories-created differently","unit":"contributions"},"fetched_on":{"meaning":"the UTC day this rollup was recorded (YYYY-MM-DD), rollups are kept per day, so the type split can be compared week over week"}},"tasks":{"title":{"meaning":"the task name as the member wrote it, stored as-is (a fact)"},"priority":{"meaning":"task importance as the member set it: 1 is normal, 4 is urgent (shown as p1 in Todoist)","range":"1-4","direction":"higher is more urgent"},"due_at":{"meaning":"when the task is due, ISO 8601 UTC; null when the task has no due date"},"completed_at":{"meaning":"when the task was completed, ISO 8601 UTC; null while the task is still open"},"project_id":{"meaning":"stable id of the project this task lives in"},"project_name":{"meaning":"the name of the project this task lives in, exactly as the member wrote it (their own structure, a fact); null when the source did not say"},"project_is_inbox":{"meaning":"true when this task lives in the source’s default Inbox rather than a member-created project; null when the source did not say"},"project_order":{"meaning":"the project’s position in the member’s own sidebar, exactly as they arranged it — lower comes first; null when the source did not say"},"sort_order":{"meaning":"the task’s position within its project, exactly as the member arranged it — lower comes first; null for completed-archive rows"},"labels":{"meaning":"the member’s own tags on this task (e.g. deep-work, errand, home), exactly as they wrote them — a list of names, or null when the task has none"},"description":{"meaning":"the member’s own notes on this task, exactly as they typed them, served verbatim; null when the task has none"},"duration_minutes":{"meaning":"how long the member estimated this task will take, in MINUTES (their own estimate, one canonical unit); null when they set none","unit":"minutes"},"deadline_date":{"meaning":"the member’s hard finish-by DAY for this task (YYYY-MM-DD, date-only, distinct from due_at, which is when they plan to DO it); null when no deadline is set"},"is_recurring":{"meaning":"true when this task’s due date repeats (a habit or routine rather than a one-off); null when the task has no due date"},"recurrence":{"meaning":"the repeat rule in the member’s OWN words (e.g. \"every 2nd Monday\", \"every workday\"); only present on recurring tasks"},"added_at":{"meaning":"when the member created this task, ISO 8601 UTC, with completed_at this gives a task’s full lifetime; null when the source omits it"},"section_id":{"meaning":"stable id of the section this task sits in within its project (the member’s own grouping); null when the task is in no section"},"parent_id":{"meaning":"the parent task’s id when this is a SUBTASK, rows sharing a parent_id are one checklist under that parent; null for top-level tasks"},"assigned_to_self":{"meaning":"in a shared project: true when this task is assigned to the MEMBER, false when it is assigned to someone else (that person’s identity is never stored), null when unassigned"}},"coding":{"coded_date":{"meaning":"the day this coding time was logged, pinned to 00:00 UTC on the shared day-spine"},"total_seconds":{"meaning":"total time spent actively coding that day, measured in SECONDS (canonical SI; convert to hours and minutes for display)","unit":"seconds","direction":"higher means more coding time"},"top_language":{"meaning":"the programming language with the most coding time that day: a NAME only, never code content"},"top_project":{"meaning":"the project with the most coding time that day: the project NAME only, never file paths or code content"},"categories":{"meaning":"the day’s coding time split by activity — a map of category name (Coding, Debugging, Building, Code Reviewing…) to SECONDS; a cognitive-load signal, or null when the source did not break it down","unit":"seconds per category"},"languages":{"meaning":"the day’s coding time split across ALL programming languages — a map of language NAME to SECONDS (not just the top one), or null when the source did not break it down; NAMES only, never code content","unit":"seconds per language","direction":"higher means more time in that language"},"projects":{"meaning":"the day’s coding time split across ALL projects — a map of project NAME to SECONDS (not just the top one), or null; the project NAMES only, never file paths or code content","unit":"seconds per project"},"editors":{"meaning":"the day’s coding time split by editor/IDE — a map of editor NAME (VS Code, Vim, JetBrains…) to SECONDS, or null when the source did not break it down","unit":"seconds per editor"},"operating_systems":{"meaning":"the day’s coding time split by operating system — a map of OS NAME (Mac, Windows, Linux) to SECONDS, or null; the host machine name and IP are never stored","unit":"seconds per OS"},"ai":{"meaning":"the day’s AI-vs-human code authorship — an object with lines ADDED and DELETED by an AI agent versus by hand (ai_additions/ai_deletions/human_additions/human_deletions), a map of AI agent TOOL name (Claude Code, Cursor, Copilot — never a model name) to lines it changed (agents), and token + session counts; null unless the member codes through a reporting AI agent. Facts only: line counts, never the code itself","unit":"lines, tokens, sessions","direction":"a higher ai share means more of the code was AI-written"}},"notes":{"title":{"meaning":"the page or database NAME only, as the member wrote it; the note body/content is never stored or served"},"object_type":{"meaning":"what kind of entry this is in the member’s knowledge base: page or database","range":"page or database"},"last_edited_at":{"meaning":"when the member last edited this page or database, ISO 8601 UTC; the freshest signal of what they are working on or thinking about"},"created_at":{"meaning":"when this page or database was created, ISO 8601 UTC; null when the provider omits it"},"url":{"meaning":"link to open this page or database in the member’s notes app (informational only, never fetched by Vitality)"},"properties":{"meaning":"the page’s own property values as the member filled them in, a map of their property NAME to { type, value }: status/select names, multi_select name lists, dates as {start, end}, numbers, checkboxes, urls, and short text (rich_text) as plain words. People properties are a COUNT of people (never identities) and relation properties a COUNT of linked pages (never ids). The page BODY is never stored. Null when a page has no captured properties"},"parent_database_id":{"meaning":"stable id of the shared database this page belongs to, rows sharing it are entries of one database; null for standalone pages"},"parent_database_name":{"meaning":"the parent database’s NAME as the member wrote it (e.g. \"Content calendar\"), when that database rode the same sync; null when unknown or standalone"},"icon_emoji":{"meaning":"the emoji the member set as this page’s icon, exactly as chosen; null when the page has no emoji icon"},"in_trash":{"meaning":"true when the member moved this page to the trash, still shared, but discarded; null when the provider did not say"}},"weather":{"measured_on":{"meaning":"the local calendar day this weather describes, at the location the member granted","unit":"YYYY-MM-DD date"},"temp_max_c":{"meaning":"the warmest air temperature reached that day","unit":"degrees Celsius","range":"typically -20 to 45","direction":"neither is better; it is context, not a score"},"temp_min_c":{"meaning":"the coldest air temperature that day, which almost always falls just before dawn","unit":"degrees Celsius","range":"typically -25 to 30","direction":"neither is better; it is context, not a score"},"temp_mean_c":{"meaning":"the average air temperature across the whole day","unit":"degrees Celsius","range":"typically -20 to 40","direction":"neither is better; it is context, not a score"},"apparent_temp_max_c":{"meaning":"the highest FELT temperature that day, with humidity, wind and sun applied, so it can sit well above the plain air temperature","unit":"degrees Celsius","range":"typically -25 to 50","direction":"neither is better; it is context, not a score"},"apparent_temp_min_c":{"meaning":"the lowest FELT temperature that day, with wind chill applied","unit":"degrees Celsius","range":"typically -30 to 30","direction":"neither is better; it is context, not a score"},"humidity_mean_pct":{"meaning":"average relative humidity across the day, meaning how close the air was to holding all the water it can","unit":"percent","range":"0 to 100","direction":"neither is better; it is context, not a score"},"dew_point_mean_c":{"meaning":"the temperature the air would have to cool to before water condenses; it tracks how muggy the air actually felt far better than relative humidity does, because humidity alone is distorted by temperature","unit":"degrees Celsius","range":"typically -20 to 27, where above 18 reads as sticky","direction":"neither is better; outside context, not a personal measurement"},"precipitation_mm":{"meaning":"total rain, snow and other precipitation that fell that day, as depth of water","unit":"millimetres","range":"0 to 200 on an extreme day","direction":"neither is better; it is context, not a score"},"daylight_seconds":{"meaning":"how long the sun was above the horizon that day, in canonical SI seconds (divide by 3600 for hours)","unit":"seconds","range":"0 to 86400","direction":"neither is better; it is context, not a score"},"weather_code":{"meaning":"the World Meteorological Organization code for the dominant conditions that day, where 0 is clear sky, 1 to 3 run cloudy, 45 to 48 fog, 51 to 67 drizzle and rain, 71 to 77 snow, 80 to 82 showers, and 95 to 99 thunderstorm","unit":"WMO code","range":"0 to 99","direction":"neither is better; it is a category, not a score"},"overnight_temp_mean_c":{"meaning":"the average OUTSIDE air temperature through the night that ended this morning, measured from 22:00 the evening before to 07:00","unit":"degrees Celsius","range":"typically -20 to 32","direction":"neither is better; it is outside context, not a personal measurement"},"overnight_temp_max_c":{"meaning":"the warmest the OUTSIDE air got during that same overnight window","unit":"degrees Celsius","range":"typically -15 to 35","direction":"neither is better; outside context, not a personal measurement"},"overnight_apparent_max_c":{"meaning":"the warmest FELT outside temperature overnight, with humidity applied","unit":"degrees Celsius","range":"typically -20 to 40","direction":"neither is better; outside context, not a personal measurement"},"overnight_humidity_mean_pct":{"meaning":"average relative humidity through the overnight window","unit":"percent","range":"0 to 100","direction":"neither is better; it is context, not a score"},"overnight_dew_point_mean_c":{"meaning":"average dew point through the overnight window; a higher dew point means muggier outside air","unit":"degrees Celsius","range":"typically -20 to 27","direction":"neither is better; outside context, not a personal measurement"}}}}