A property's profile and its places
maintenance.property.get
GET/api/v1/households/{household_id}/queries/maintenance.property.get
- Query
- Rigel runs it
One property: its profile facts (year built, heating, water, roof… each with where it came from), the profile keys not found yet, and its places as a tree in reading order. With one property, leave property_id out.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
property_idquerystringoptional | Which property. Leave out when there is one. |
Response#
200 The answer.
| Field | Description |
|---|---|
idstringrequired | A property ID, such as prp_01JC0000000000000000000000. |
addressstring or nullrequired | The web route that opens it. |
namestringrequired | The property's name. |
postal_addressstring or nullrequired | Its postal address, as written. |
factsarray of objectsrequired | Profile facts, resolved: strongest origin then newest for each key. |
facts[].attribute_idstringrequired | The fact's ID (atr_…). |
facts[].keystringrequired | The fact key, such as filter_size or capacity. |
facts[].labelstringrequired | The key as a person reads it, such as Filter size. |
facts[].valuestring or nullrequired | The text value, if any. |
facts[].value_numnumber or nullrequired | The numeric value, if any. |
facts[].unitstring or nullrequired | The unit of value_num in the catalog's snake_case, such as in or btu_per_hour. |
facts[].in_wordsstringrequired | The value with its unit as a person reads it, such as "40 gal". |
facts[].originone of: homeowner, label, research, generalrequired | How it was established: homeowner, label, research or general. |
facts[].origin_in_wordsstringrequired | The origin as a person reads it, such as "From the label". |
facts[].evidence_idstring or nullrequired | The evidence (evi_…) it rests on, if any. |
facts[].sourceone of: asset, group, model, group_model, propertyrequired | Whose fact it is: the asset itself, its group, its model, its group's model, or the property. A group or model fact is shared by every asset it covers. |
missing_keysarray of objectsrequired | Profile keys with no value yet (Not found yet). |
missing_keys[].keystringrequired | The profile key. |
missing_keys[].labelstringrequired | Its label. |
placesarray of objectsrequired | Every place, depth-first, parents before their children. |
places[].idstringrequired | A maintenance location ID, such as mlc_01JC0000000000000000000000. |
places[].namestringrequired | The place's name. |
places[].parent_idstring or nullrequired | The place that contains it; null for the root (the house itself). |
places[].depthintegerrequired | 0 for the root, 1 for a floor or room in it, and so on. |
places[].asset_countintegerrequired | Items directly in this place (retired ones not counted). |
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 house's profile and places
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.property.get' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.property.get", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.property.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_01M6V9CSZVSK6TWTANJ6HFXPJ6
{
"id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"address": "/maintenance/home",
"name": "The Okafor house",
"postal_address": null,
"facts": [
{
"attribute_id": "atr_01M6V9CSVBF91AZQYQC909EHV0",
"key": "heating",
"label": "Heating",
"value": "Forced-air gas furnace",
"value_num": null,
"unit": null,
"in_words": "Forced-air gas furnace",
"origin": "homeowner",
"origin_in_words": "You told Rigel",
"evidence_id": "evi_01M6V9CSVB8W1TBNYQ98YPXGJ1",
"source": "property"
},
{
"attribute_id": "atr_01M6V9CSV9CTQKPG4R3BT8JJHW",
"key": "year_built",
"label": "Year built",
"value": null,
"value_num": 1998,
"unit": null,
"in_words": "1998",
"origin": "homeowner",
"origin_in_words": "You told Rigel",
"evidence_id": null,
"source": "property"
}
],
"missing_keys": [
{
"key": "property_type",
"label": "Type"
},
{
"key": "architectural_style",
"label": "Style"
},
{
"key": "construction",
"label": "Construction"
},
{
"key": "floor_area",
"label": "Floor area"
},
{
"key": "stories",
"label": "Stories"
},
{
"key": "bedrooms",
"label": "Bedrooms"
},
{
"key": "bathrooms",
"label": "Bathrooms"
},
{
"key": "lot_size",
"label": "Lot size"
},
{
"key": "garage_capacity",
"label": "Garage"
},
{
"key": "cooling",
"label": "Cooling"
},
{
"key": "water_source",
"label": "Water"
},
{
"key": "sewer",
"label": "Sewer"
},
{
"key": "roof",
"label": "Roof"
},
{
"key": "foundation",
"label": "Foundation"
},
{
"key": "basement",
"label": "Basement"
},
{
"key": "climate",
"label": "Climate"
}
],
"places": [
{
"id": "mlc_01M6V9CSTXTBGZSD6R2BT8P3ZQ",
"name": "House",
"parent_id": null,
"depth": 0,
"asset_count": 0
},
{
"id": "mlc_01M6V9CSV2ZBXBSMRDCJNRCSWY",
"name": "Back yard",
"parent_id": "mlc_01M6V9CSTXTBGZSD6R2BT8P3ZQ",
"depth": 1,
"asset_count": 0
},
{
"id": "mlc_01M6V9CSTX3QNP5B6R3SMP5B2B",
"name": "Basement",
"parent_id": "mlc_01M6V9CSTXTBGZSD6R2BT8P3ZQ",
"depth": 1,
"asset_count": 1
},
{
"id": "mlc_01M6V9CSTZEJ4XTJHRBQ1HGD2J",
"name": "Utility closet",
"parent_id": "mlc_01M6V9CSTX3QNP5B6R3SMP5B2B",
"depth": 2,
"asset_count": 1
},
{
"id": "mlc_01M6V9CSV0Z1XFB5VWFWXV2SQY",
"name": "Kitchen",
"parent_id": "mlc_01M6V9CSTXTBGZSD6R2BT8P3ZQ",
"depth": 1,
"asset_count": 1
},
{
"id": "mlc_01M6V9CSV1BGK3V8FK4RRCEZYS",
"name": "Laundry nook",
"parent_id": "mlc_01M6V9CSTXTBGZSD6R2BT8P3ZQ",
"depth": 1,
"asset_count": 2
}
]
}For Rigel#
Rigel's tool for this query is maintenance_property_get. Rigel runs this on its own, then says what it did. The agent guide has the rest.