Repairs and improvements under way
maintenance.project.list
GET/api/v1/households/{household_id}/queries/maintenance.project.list
- Query
- Rigel runs it
Projects with their status and counts. Without a status, the ones still going (planning, active, on hold); ask for done or cancelled to see finished ones.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
statusqueryone of: planning, active, on_hold, done, cancelledoptional | Only projects in this status. Leave out for planning, active and on hold. |
property_idquerystringoptional | Only this property's projects. |
Response#
200 The answer.
| Field | Description |
|---|---|
itemsarray of objectsrequired | |
items[].idstringrequired | A maintenance project ID, such as mpj_01JC0000000000000000000000. |
items[].addressstring or nullrequired | The web route that opens it. |
items[].titlestringrequired | What the project is. |
items[].goalstring or nullrequired | What done looks like. |
items[].kindone of: repair, improvement, maintenance, otherrequired | repair, improvement, maintenance or other. |
items[].statusone of: planning, active, on_hold, done, cancelledrequired | planning, active, on_hold, done or cancelled. |
items[].property_idstringrequired | A property ID, such as prp_01JC0000000000000000000000. |
items[].started_onstring or nullrequired | When it started. |
items[].finished_onstring or nullrequired | When it finished. |
items[].budgetinteger or nullrequired | The budget in minor units of currency. |
items[].currencystring or nullrequired | The budget's currency. |
items[].asset_countintegerrequired | Items it concerns. |
items[].open_issue_countintegerrequired | Problems it is working on that aren't resolved. |
items[].visit_countintegerrequired | Visits for it. |
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.
List the projects under way
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT185JE0ZHPYHKVP536X
{
"items": [
{
"id": "mpj_01M6V9CSZC4PE99PPRAQ7ASEZQ",
"address": "/maintenance/projects/mpj_01M6V9CSZC4PE99PPRAQ7ASEZQ",
"title": "Stop the basement window leak",
"goal": "Dry basement walls before the spring rains.",
"kind": "repair",
"status": "active",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"started_on": "2026-10-19",
"finished_on": null,
"budget": 150000,
"currency": "USD",
"asset_count": 0,
"open_issue_count": 1,
"visit_count": 0
}
]
}List finished projects
Without a status, only the ones still going come back.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list?status=done' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list?status=done", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.project.list?status=done HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT1A4E68NKVAJP2H7D3V
{
"items": []
}For Rigel#
Rigel's tool for this query is maintenance_project_list. Rigel runs this on its own, then says what it did. The agent guide has the rest.