Skip to content
Rigel docs
Open Rigel

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#

A property's profile and its places: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

property_idquerystringoptional

Which property. Leave out when there is one.

Response#

200 The answer.

A property's profile and its places: response fields
FieldDescription
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.

A property's profile and its places: errors
StatusCodeWhen
400validation_failedA field is missing, misspelled or out of range. details.fields lists each problem.
401unauthenticatedThe request has no valid session.
404not_foundThe 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

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.property.get' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
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();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.property.get HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
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.

Rigel is in early access, and sign-up is by invitation. Open Rigel