{"addressFull":"197 RANDALL RD, BALLSTON SPA, NY 12020","addressComponents":ADDRESS_COMPONENTS,"baseBuilding":BASE_BUILDING,"globalControls":GLOBAL_CONTROLS,"defaultModelControls":MODEL_CONTROLS,"timelines":[TIMELINE]}
As discussed in Usage Instructions, the Defaulting Engine will populate any missing or null building characteristics. In each schema definition table below, information about each key’s default is provided.
PSC: Property-specific characteristic. This type of default indicates that specific information about the address is collected and applied to that attribute. Thus, each address may have a different default value. For example, buildingSummary.conditionedFloorArea is collected from various Data Sources to be populated when missing or null.
BSA : Building stock assumption. This type of default indicates that location- and vintage-based building stock assumptions are used by the defaulting engine to populate missing and null keys.
Note
Objects and arrays are used as values throughout the API. The difference is:
Object: This represents a single item that is not inherently a collection. An example of this is Air Infiltration, which is characteristic of the entire building and thus can only be defined once.
Array: This represents an item that is inherently a collection, even if we don’t yet support more than one item. Often it will be an array of objects, where each object defines an item in the collection. HVAC and Walls are examples of this.
//ENCLOSURE{"airInfiltration":{"rate":15.0,"rateUnit":"ACH",// if null, default is ACH"housePressurePa":50.0,// if null, default is 50 Pa},"attics":[// required to be 1{"id":"Attic1","type":"attic vented",// ("attic vented" | "attic unvented" | "cathedral ceiling" | "flat roof")"area":1225,"floorAssemblyEffectiveRValue":20.6}],"roofs":[// limited to 1{"id":"Roof1","area":1370,"pitch":6,"assemblyEffectiveRValue":2.3,"lifetime":LIFETIME// optional, refer to Lifetime schema}],"foundations":[// limited to 1{"id":"BasementUnconditioned1","type":"basement unconditioned",// ("basement conditioned" | "basement unconditioned" | "crawl vented" | "crawl unvented" | "slab" | "belly any wing")"area":1234,// if the area is less than the footprint area, the remainder will be assigned to crawlspace"wallHeight":8,}],"walls":[// limited to 1{"id":"Wall1","type":"wood stud",// ("wood stud" | "concrete masonry unit" | "structural brick" | "steel frame" | "stone" | "adobe" | "log wall" | "solid concrete")"area":1234,"assemblyEffectiveRValue":10.9,"fractionAreaShared":0.0,// fraction of wall area shared with an adjacent structure or dwelling unit (e.g. townhouses)}],}
The attic is entered in ...building.enclosure.attics. Currently, this array must contain exactly 1 attic object. If there is no attic present in house, set area to 0.
See note about objects and arrays for more information.
Each roof surface is entered in ...building.enclosure.roofs. Currently, this array is limited to a maximum size of 1. See note about objects and arrays
for more information.
Each foundation is entered in ...building.enclosure.foundations. Currently, this array is limited to a maximum size of 1. See note about objects and arrays
for more information.
Each wall that has no contact with the ground and bounds a space is entered in ...building.enclosure.walls. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each space cooling system (other than a heat pump) can be entered in ...building.systems.hvac.hvacCoolingSystems. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
{"id":"CentralAirConditioner1","connectedDistributionId":"HVACDistributionFurnaceAndCentralAC1","systemType":"central air conditioner","coolCapacityBtuPerHour":1000.0,"compressorType":"single stage","coolEfficiency":12,"coolEfficiencyUnits":"SEER","coolLoadFraction":0.8,"lifetime":LIFETIME}
Each space heating system (other than a heat pump) can be entered in ...building.systems.hvac.hvacHeatingSystems. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each space conditioning heat pump can be entered in ...building.systems.hvac.hvacHeatPumps. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each separate air distribution system can be entered in ...building.systems.hvac.hvacDistributionSystems.airDistributionSystems. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each separate hydronic distribution system can be entered in ...building.systems.hvac.hvacDistributionSystems.hydronicDistributionSystems. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each water heater is entered in ...building.systems.waterHeatingSystems. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
{"waterHeatingSystems":[{"id":"WaterHeater1","systemType":"storage water heater","connectedHeatingId":"Boiler1","fuel":"natural gas","location":"living space","tankVolume":40,"dhwLoadFraction":1.0,"heatCapacityBtuPerHour":null,"efficiency":0.92,"efficiencyUnits":"EF","hotWaterTemperature":125.0,"performanceAdjustment":null,"lifetime":LIFETIME}]}
Each electrical panel is entered in ...building.systems.electricalPanels. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Each solar electric photovoltaic (PV) system is entered in ...building.systems.photovoltaics. Currently, this array is limited to a maximum size of 1.
See note about objects and arrays for more information.
Clothes dryers can be entered in ...building.appliances.clothesDryers. Currently, this array is limited to a maximum size of 1. See note about objects and arrays
for more information.
Cooking ranges can be entered in ...building.appliances.cookingRanges. Currently, this array is limited to a maximum size of 1. See note about objects and arrays
for more information.
//LIFETIME{"replacementCost":1000,// required if status quo timeline requested. cost to replace system with a near-equivalent that is available today// Two of the following three properties can be optionally defined to place an existing system on the status quo timeline.// Default values are based on system type and year built."effectiveUsefulLifeDays":5475,"installedDate":"2018-01-01","endOfLifeDate":"2032-12-31"}
// TIMELINE{"id":"<UUID>",// optional, if missing an UUID is generated"label":"MY_TIMELINE",// optional, if missing an random adjective-animal string is generated"comparedTo":"hilarious-hyena",// optional, needs to exist in the current payload, if missing it defaults to STATUS_QUO"models":[MODEL],// refer to the Model schema}
// MODEL{"id":"<UUID>",// optional, if missing an UUID is generated"label":"NYSERDA001",// optional, if missing an UUID is generated"appliedOn":"<DATE>",// date in the YYYY-MM-DD format, defaults to today's date"modelControls":MODEL_CONTROLS,// optional, refer to the Model Controls schema"loans":[LOAN],// optional, refer to the Loan schema"incentives":[INCENTIVE],//optional, refer to the Incentive schema"automatedMeasures":AUTOMATED_MEASURES,//optional, refer to the Automated Measures schema"customMeasures":[CUSTOM_MEASURE],// optional, refer to the Custom Measure schema"improvedBuilding":IMPROVED_BUILDING,// optional, refer to the Improved Building schema"userData":{// optional, user-defined labels (only strings) to associate with the model, mirrored in the response"myKey":"aValue",}}
Model controls (timelines.models.modelControls) and default model controls (defaultModelControls) are optional schemas. If the default model controls object is provided, and no model controls object is present
in a given model, values in this object are taken by default, affecting such model.
// MODEL_CONTROLS (mirrored at the model level){// Allows the user to control HVAC sizing behavior if HVAC capacities are defined. If capacities are undefined, the model will autosize the system.// If false, the user-specified fixed capacity will be used.// If true, the maximum of the user-specified fixed capacity and the heating/cooling// design load will be used to reduce potential for unmet loads.// If not provided, the default value is false.//"allowIncreasedFixedCapacities":false,// Describes how autosized heat pumps are handled.// If "max load", heat pumps are sized based on the maximum of heating and cooling design loads.// If "acca", heat pumps are sized per ACCA Manual J/S based on cooling design loads with some oversizing allowances for heating design loads.// If "hers", autosized heat pumps have their nominal capacity sized equal to the larger of heating/cooling design loads.// If not provided, the default value of "acca" is used."heatPumpSizingMethodology":"acca",// ("acca" | "max load" | "hers")"energyCostRates":ENERGY_COST_RATES,// optional, refer to the Energy Costs Rates schema"weather":WEATHER,// optional, refer to Weather schema}
// ENERGY_COST_RATES// Rate units will be based on monetary unit per fuel unit, as defined in UNITS schema.// If a rate is provided, but the unit property is not, throw an error.// Example: units.electricity = "kWh" and units.monetary = "USD", electricity energy cost rate is USD per kWh{"electricity":{"kwh":0.0,},"naturalGas":{"ccf":0.0,}"coal":{"mbtu":0.0,}}
// LOAN{"id":"Loan1","label":"USER_DEFINED_1","description":"Colorado loan loss reserve","termInMonths":240,"interestRateAnnual":0.07,"principalValue":20000,// if null, total cost of COST schemas referencing this id"downPayment":2000,"closingCost":1000,"minLoanAmount":2000,//optional"maxLoanAmount":100000//optional}
Remove or adjust relevant values of existing systems (e.g. heating, cooling, heat pump, water heater or
distribution systems). The defaulting engine determines whether a house contains one or more of these systems. Existing
systems are harder to refer to in improved building definitions and assumptions change from house to house. For that
reason, these automated measures help modify the base building definition without much knowledge of said
characteristics.
Operations to the existing HVAC heating system are entered in automatedMeasures.existingHvacHeatingSystem. This object covers the singular predefined system providing heating in the base building, including a heat pump.
If action = “remove” and the existing water heating system is dependent on the removed heating system (i.e. indirect water heater),
then a new standalone heat pump water heating system will automatically be added to the improvedBuilding.
Note
If action = “remove” and the existing heating system is a heat pump, then the existing cooling system will also be removed.
This is based on the assumption that the newHeatPump will serve both loads.
Operations on the existing cooling systems are entered in automatedMeasures.existingHvacCoolingSystem. This object covers the singular predefined system providing cooling in the base building, including a heat pump.
If action = “remove” and the existing cooling system is a heat pump, then the existing heating system will also be removed. This is based on the assumption that the newHeatPump will serve both loads.
Operations on the existing distribution systems are entered in automatedMeasures.existingHvacDistributionSystem. This object covers the predefined distribution system(s), either air and/or hydronic,
connected to the base building’s heating and cooling systems.
Operations on the existing water heating system can be entered in automatedMeasures.existingWaterHeatingSystem. This object covers the predefined water heating system in the base building.
Adding a new system may require knowledge of the current house, possibly not available at request time. For that reason,
simpler instructions are made available to let the user add a system with minimal configuration (e.g. ENERGY STAR
compliant heat pump).
Use these special measures to adjust global aspect of the building. At the moment, the supported measures modify the
thermostat, attic insulation and air sealing.
{"label":"Main Cost",//optional"loanId":"Loan1","incentiveIds":["Incentive1","Incentive2"],"costType":"one time",// ("one time" | "recurring")"recurrencePeriod":30,//number of days //required if costType is recurring"fixedCost":10,"variableCost":VARIABLE_COST//not currently supported"userData":{"sku":"123"},}
// CUSTOM_MEASURE{"label":"kitchen counter replacement","description":"replace laminate counters with marble","costs":[COST],// refer to the Cost schema}
Global controls is an optional schema and contains a variety of customization settings that affect all models contained within the request.
// GLOBAL_CONTROLS{"debug":true,// defaults to false, provide all the debugging info for development and integration"includeInputs":true,// defaults to true, mirror user inputs in the response"includeEnergyEndUses":false,// defaults to false"includeDefaultAssumptions":false,// defaults to false"includeBaseResults":true,// defaults to true"includeTypical":false,// defaults to false"useFixture":false,// defaults to false"fixtureName":"automated-measures-new-heat-pump",// fixture to use (required if useFixture is true)// Instruct which financial calculations will be included in the response.// If not provided, the default values are "difference", "installationCosts" and "energyCosts".// To return no financial analysis altogether, pass in an empty array ([]).//"financialAnalysisOptions":["difference","installedCosts","energyCosts"],// ("ROI" | "cashflow" | "SIR" | "MIRR" | "difference" | "installedCosts" | "energyCosts")// Energy, costs and emissions data resolution.// If not provided, the default value is only "annual".//"resolution":["annual","monthly"],// ("hourly" | "monthly" | "annual") //defaults to annual"includeStatusQuoTimeline":false,// defaults to false// Anchor timelines and models to a start date.// * Date value is in the YYYY-MM-DD format// * Date value can be set in the past.// * All models' "appliedOn" dates must happen after this value.// * If not provided, the default value is the current date.//"timelineStartDate":"2022-12-15",// Length of the timelines in years. Used to compute costs, differences and the financial analysis.// If not provided, the default value is 1 year.//"timelineDurationInYears":1,"units":UNITS,// optional, refer to the Units schema"escalationRates":ESCALATION_RATES,// optional, refer to the Escalation Rates schema}