The state of the house at a glance
maintenance.overview.get
GET/api/v1/households/{household_id}/queries/maintenance.overview.get
- Query
- Rigel runs it
The properties with their asset counts, and for all of them (or one property) how many maintenance tasks are overdue, due within two weeks, due this season or later, the open problems, the active projects and the upcoming visits. Start here for 'how are we doing?' or 'what needs attention?'.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
property_idquerystringoptional | Only this property's numbers. Leave out for all. |
Response#
200 The answer.
| Field | Description |
|---|---|
todaystringrequired | The household's local date, YYYY-MM-DD. |
propertiesarray of objectsrequired | |
properties[].idstringrequired | A property ID, such as prp_01JC0000000000000000000000. |
properties[].namestringrequired | The property's name. |
properties[].addressstring or nullrequired | Its postal address, as written. |
properties[].asset_countintegerrequired | How many items are in its records (retired ones not counted). |
tasksobjectrequired | Active, non-optional maintenance tasks by group. |
tasks.overdueintegerrequired | Past their due date. |
tasks.due_soonintegerrequired | Due within 14 days, or a seasonal window that is open now. |
tasks.this_seasonintegerrequired | Due before the current season ends. |
tasks.laterintegerrequired | Everything else, including usage tasks with no date. |
open_issue_countintegerrequired | Problems that are open or being watched. |
urgent_issuesarray of objectsrequired | The worst open problems, most severe first. |
urgent_issues[].idstringrequired | The problem's ID (iss_…). |
urgent_issues[].addressstring or nullrequired | The web route that opens it. |
urgent_issues[].titlestringrequired | What the problem is. |
urgent_issues[].severityone of: low, medium, high, urgentrequired | How bad it is. |
urgent_issues[].asset_namestring or nullrequired | The item it is about. |
active_project_countintegerrequired | Projects that are planning, active or on hold. |
upcoming_visitsarray of objectsrequired | The next scheduled visits, soonest first. |
upcoming_visits[].idstringrequired | The visit's ID (vst_…). |
upcoming_visits[].addressstring or nullrequired | The web route that opens it. |
upcoming_visits[].titlestringrequired | What it is for. |
upcoming_visits[].contractor_namestring or nullrequired | Who is coming. |
upcoming_visits[].starts_atstring (date-time) or nullrequired | When they arrive (start of the window). |
upcoming_visit_countintegerrequired | How many visits are scheduled from now on. |
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.
The state of the house at a glance
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.overview.get' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.overview.get", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.overview.get HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSZQ5S4BVY0CQJX5YK8J
{
"today": "2026-11-07",
"properties": [
{
"id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"name": "The Okafor house",
"address": null,
"asset_count": 6
}
],
"tasks": {
"overdue": 1,
"due_soon": 2,
"this_season": 0,
"later": 3
},
"open_issue_count": 3,
"urgent_issues": [
{
"id": "iss_01M6V9CSYFR1X4V2X9M3HXT85F",
"address": "/maintenance/issues/iss_01M6V9CSYFR1X4V2X9M3HXT85F",
"title": "Basement window leaks in heavy rain",
"severity": "high",
"asset_name": null
},
{
"id": "iss_01M6V9CSYDVEZGY1GMEFWZ87YF",
"address": "/maintenance/issues/iss_01M6V9CSYDVEZGY1GMEFWZ87YF",
"title": "Dishwasher not draining fully",
"severity": "medium",
"asset_name": "Dishwasher"
},
{
"id": "iss_01M6V9CSYG0VSKKZ391H7TTWHX",
"address": "/maintenance/issues/iss_01M6V9CSYG0VSKKZ391H7TTWHX",
"title": "Towels take two cycles to dry",
"severity": "low",
"asset_name": "Dryer"
}
],
"active_project_count": 1,
"upcoming_visits": [
{
"id": "vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"address": "/maintenance/visits/vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"title": "Look at the dishwasher drain",
"contractor_name": "Riverbend Plumbing & Drain",
"starts_at": "2026-11-13T15:00:00.000Z"
},
{
"id": "vst_01M6V9CSYWPZZCJP1Q0PBTS1SF",
"address": "/maintenance/visits/vst_01M6V9CSYWPZZCJP1Q0PBTS1SF",
"title": "Furnace inspection and tune-up",
"contractor_name": "Smith Heating & Air",
"starts_at": "2026-11-19T15:00:00.000Z"
}
],
"upcoming_visit_count": 2
}For Rigel#
Rigel's tool for this query is maintenance_overview_get. Rigel runs this on its own, then says what it did. The agent guide has the rest.