| tds | No | Total Dissolved Solids percentage (e.g. 9.1 or 1.35) | |
| dose_g | Yes | | |
| rating | No | | |
| tasted | No | 1 = the shot was tasted at log time. The explicit way to record a CLEAN tasting: sensory tags all describe defects, so a good shot has none — without this flag (or a rating) it would be filed taste-pending. Tags or a rating also mark a shot as tasted; 0 (default) = taste later. | |
| time_s | Yes | | |
| bean_id | No | Override: log against this bean instead of the active one (null = active) | |
| verdict | No | | |
| yield_g | Yes | | |
| water_id | No | Optional references to waters formulation | |
| best_brew | No | 1 if marked as best brew, 0 otherwise | |
| favourite | No | 1 if favourite, 0 otherwise | |
| pulled_at | No | When the shot was actually pulled (ISO 8601 or "YYYY-MM-DD HH:MM:SS"), for backdated entries. Defaults to now (null = now). When backdating, pass the returned shot_id to diagnose_shot explicitly — the default diagnosis target is the chronologically latest shot. | |
| beverage_g | No | Yield mass excluding cup/vessel weight in grams | |
| grinder_id | No | Override: grinder used, if not the active one (null = active) | |
| machine_id | No | Override: machine used, if not the active one (null = active) | |
| program_id | No | Override: machine program used, if not the active one (null = active) | |
| temp_taste | No | | |
| vessel_name | No | Cup/vessel name | |
| bloom_time_s | No | Pre-wetting or bloom duration in seconds | |
| drink_intent | No | | |
| flavor_notes | No | | |
| flow_profile | No | Opaque flow profile data (JSON/TEXT) | |
| method_tools | No | JSON representation of method tools used (e.g., paper filters, screen) | |
| observations | No | | |
| sensory_tags | No | | |
| finish_action | Yes | | |
| temperature_c | No | Brew temperature in Celsius | |
| data_confidence | No | measured = weighed/timed live; recalled = from memory; estimated = a best guess (e.g. missed the timer — "~25s") | |
| vessel_weight_g | No | Cup/vessel weight in grams | |
| pressure_profile | No | Pressure profile description or values | |
| first_drip_time_s | No | Time to first drip in seconds | |