What changed in a week's plan, and who changed it
meals.week.changes
GET/api/v1/households/{household_id}/queries/meals.week.changes
- Query
- Rigel runs it
The commands that changed the week's meals, newest first, from the command log: when, who (a person, Rigel, or an outside account), what was done in words, and the affected meals as they were before and after. Use it to see what Rigel or someone else changed, and to put meals back with meals.meal.plan and meals.meal.update. A meal that moved in or out of the week shows its whole history.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
week_startquerystring (date)required | The first day of the plan week, YYYY-MM-DD. The week is the 7 days starting on it; screens use the household's week_starts_on day. |
limitqueryintegeroptional | How many changes to return, 1 to 100. |
Response#
200 The answer.
| Field | Description |
|---|---|
changesarray of objectsrequired | The changes, newest first. |
changes[].command_idstringrequired | The command that made the change. |
changes[].atstring (date-time)required | When the household received it. |
changes[].whoobjectrequired | |
changes[].who.kindone of: person, rigel, outsiderequired | A household member, Rigel, or an outside account. |
changes[].who.person_idstring or nullrequired | The person, when known. |
changes[].who.namestringrequired | Who, for showing: "Ada", "Rigel", "Someone". |
changes[].summarystringrequired | What happened, such as "Moved Tue dinner to Wed dinner". |
changes[].beforearray of objectsrequired | The meals the change touched, as they were before it. |
changes[].before[].meal_idstringrequired | A meal ID, such as mel_01JC0000000000000000000000. |
changes[].before[].labelstringrequired | The meal, such as "Tue dinner". |
changes[].before[].datestring (date)required | The day of the meal, YYYY-MM-DD. |
changes[].before[].slotone of: breakfast, lunch, dinner, snackrequired | Which meal of the day: breakfast, lunch, dinner or snack. |
changes[].before[].peoplearray of stringsrequired | Names of the people it was for. |
changes[].before[].dishesarray of stringsrequired | Names of the dishes, in order. |
changes[].before[].notestring or nullrequired | The kitchen note, or null. |
changes[].afterarray of objectsrequired | The same meals after it. |
changes[].after[].meal_idstringrequired | A meal ID, such as mel_01JC0000000000000000000000. |
changes[].after[].labelstringrequired | The meal, such as "Tue dinner". |
changes[].after[].datestring (date)required | The day of the meal, YYYY-MM-DD. |
changes[].after[].slotone of: breakfast, lunch, dinner, snackrequired | Which meal of the day: breakfast, lunch, dinner or snack. |
changes[].after[].peoplearray of stringsrequired | Names of the people it was for. |
changes[].after[].dishesarray of stringsrequired | Names of the dishes, in order. |
changes[].after[].notestring or nullrequired | The kitchen note, or null. |
Errors#
Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.
| Status | Code | When |
|---|---|---|
400 | validation_failed | A field is missing, misspelled or out of range. details.fields lists each problem. |
401 | unauthenticated | The request has no valid session. |
404 | not_found | The household doesn't exist, or you aren't a member of it. |
Examples#
These are real. Each was recorded from a sample household, the Okafors, running through the whole API when this site was built.
What changed in the plan
Each change says who made it, what it did, and what the meals were before and after.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.changes?week_start=2026-11-09' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.changes?week_start=2026-11-09", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.changes?week_start=2026-11-09 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSGT088ZT8PGX6KA3C7N
{
"changes": [
{
"command_id": "cmd_01M6V9CSGQG63ZYEK8BH96W7H6",
"at": "2026-11-07T15:17:52.279Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Removed Tue snack",
"before": [
{
"meal_id": "mel_01M6V9CSGPM55HPSDSNY45G67K",
"label": "Tue snack",
"date": "2026-11-10",
"slot": "snack",
"people": [
"Nia"
],
"dishes": [
"Apple slices"
],
"note": null
}
],
"after": []
},
{
"command_id": "cmd_01M6V9CSGP039EKRR6FQYHN1MY",
"at": "2026-11-07T15:17:52.278Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Planned Tue snack: Apple slices",
"before": [],
"after": [
{
"meal_id": "mel_01M6V9CSGPM55HPSDSNY45G67K",
"label": "Tue snack",
"date": "2026-11-10",
"slot": "snack",
"people": [
"Nia"
],
"dishes": [
"Apple slices"
],
"note": null
}
]
},
{
"command_id": "cmd_01M6V9CSGM36VDKBREGFJFBRYV",
"at": "2026-11-07T15:17:52.276Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Took Theo out of Sun dinner",
"before": [
{
"meal_id": "mel_01M6V9CSFXE8ZNK29NR2EPTDDZ",
"label": "Sun dinner",
"date": "2026-11-15",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Turkey chili"
],
"note": "Keep Theo's mild."
}
],
"after": [
{
"meal_id": "mel_01M6V9CSFXE8ZNK29NR2EPTDDZ",
"label": "Sun dinner",
"date": "2026-11-15",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia"
],
"dishes": [
"Turkey chili"
],
"note": "Keep Theo's mild."
}
]
},
{
"command_id": "cmd_01M6V9CSGJ57GSEKVPX8ZAHGYP",
"at": "2026-11-07T15:17:52.274Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Moved Fri dinner to Thu dinner, swapping with Sheet pan sausage and potatoes",
"before": [
{
"meal_id": "mel_01M6V9CSFX452XJRFQ0A5WTYPH",
"label": "Thu dinner",
"date": "2026-11-12",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Sheet pan sausage and potatoes"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFXM0D756CP5KY4HP4Q",
"label": "Fri dinner",
"date": "2026-11-13",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Pizza night"
],
"note": null
}
],
"after": [
{
"meal_id": "mel_01M6V9CSFXM0D756CP5KY4HP4Q",
"label": "Thu dinner",
"date": "2026-11-12",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Pizza night"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFX452XJRFQ0A5WTYPH",
"label": "Fri dinner",
"date": "2026-11-13",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Sheet pan sausage and potatoes"
],
"note": null
}
]
},
{
"command_id": "cmd_01M6V9CSGGJATEYHMFGW3FSNZ2",
"at": "2026-11-07T15:17:52.272Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Changed Tue dinner",
"before": [
{
"meal_id": "mel_01M6V9CSFXHKGZVJ1H2H384CNQ",
"label": "Tue dinner",
"date": "2026-11-10",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Chicken thigh tacos"
],
"note": null
}
],
"after": [
{
"meal_id": "mel_01M6V9CSFXHKGZVJ1H2H384CNQ",
"label": "Tue dinner",
"date": "2026-11-10",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Chicken thigh tacos",
"Corn on the cob"
],
"note": "Use the thawed chicken."
}
]
},
{
"command_id": "cmd_01M6V9CSFXC8P32P49VP9YJQCE",
"at": "2026-11-07T15:17:52.253Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Planned 7 meals",
"before": [],
"after": [
{
"meal_id": "mel_01M6V9CSFXHKGZVJ1H2H384CNQ",
"label": "Tue dinner",
"date": "2026-11-10",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Chicken thigh tacos"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFX06M0A2GQC611XCQA",
"label": "Wed dinner",
"date": "2026-11-11",
"slot": "dinner",
"people": [
"Ben Okafor"
],
"dishes": [
"Team dinner out"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFXGQ25SM1HSAWPM40J",
"label": "Wed dinner",
"date": "2026-11-11",
"slot": "dinner",
"people": [
"Ada Okafor",
"Nia",
"Theo"
],
"dishes": [
"Veggie quesadillas"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFX452XJRFQ0A5WTYPH",
"label": "Thu dinner",
"date": "2026-11-12",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Sheet pan sausage and potatoes"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFXM0D756CP5KY4HP4Q",
"label": "Fri dinner",
"date": "2026-11-13",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Pizza night"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFXTVMCRYCPZFGJP37A",
"label": "Sat breakfast",
"date": "2026-11-14",
"slot": "breakfast",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Saturday pancakes"
],
"note": null
},
{
"meal_id": "mel_01M6V9CSFXE8ZNK29NR2EPTDDZ",
"label": "Sun dinner",
"date": "2026-11-15",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Turkey chili"
],
"note": "Keep Theo's mild."
}
]
},
{
"command_id": "cmd_01M6V9CSFSW5B74VDM47A34KTT",
"at": "2026-11-07T15:17:52.249Z",
"who": {
"kind": "person",
"person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"summary": "Planned Mon dinner: Tomato and white bean orzo",
"before": [],
"after": [
{
"meal_id": "mel_01M6V9CSFSFH4859KG4NM47HF2",
"label": "Mon dinner",
"date": "2026-11-09",
"slot": "dinner",
"people": [
"Ada Okafor",
"Ben Okafor",
"Nia",
"Theo"
],
"dishes": [
"Tomato and white bean orzo"
],
"note": "Make extra for lunches."
}
]
}
]
}For Rigel#
Rigel's tool for this query is meals_week_changes. Rigel runs this on its own, then says what it did. The agent guide has the rest.