{
  "$schema": "http://json-schema.org/draft-07/schema",
  "build_version": "v10.06.005",
  "title": "MHEA Output",
  "description": "Manufactured Home Energy Audit API possible output JSON schemas",
  "$comment": "The MHEA API produces 1 of 3 schemas.  They are 1)JSON input error, 2)Engine assert failure, or 3)Valid result",
  "type": "object",
  "additionalProperties": true,

  "required": [
    "data",
    "success"
  ],

  "oneOf": [{

    "properties": {
      "data": {
        "type": "object",
        "title": "Schema of a  typical JSON input ERROR",
        "additionalProperties": false,
        "properties": {
          "causingExceptions": {
            "type": "array",
            "title": "The Causingexceptions Schema",
            "items": {
              "type": "object",
              "title": "The Items Schema",
              "additionalProperties": true,
              "properties": {
                "causingExceptions": {
                  "type": "array",
                  "title": "The Causingexceptions Schema"
                },
                "keyword": {
                  "type": "string",
                  "title": "The Keyword",
                  "examples": [
                    "minimum"
                  ]
                },
                "message": {
                  "type": "string",
                  "title": "The Message",
                  "examples": [
                    "100 is not greater or equal to 500"
                  ]
                },
                "pointerToViolation": {
                  "type": "string",
                  "title": "The Pointertoviolation",
                  "default": "",
                  "examples": [
                    "#/audit/floor_area"
                  ]
                },
                "schemaLocation": {
                  "type": "string",
                  "title": "The Schemalocation",
                  "default": "",
                  "examples": [
                    "#/definitions/audit/properties/floor_area"
                  ]
                }
              }
            }
          },
          "keyword": {
            "type": "string",
            "title": "The Keyword in the Schema",
            "examples": [
              "allOf"
            ]
          },
          "message": {
            "type": "string",
            "title": "The Message relative to the JSON schema",
            "examples": [
              "#: only 1 subschema matches out of 2"
            ]
          },
          "pointerToViolation": {
            "type": "string",
            "title": "The Pointertoviolation Schema",
            "examples": [
              "#"
            ]
          },
          "schemaLocation": {
            "type": "string",
            "title": "The Schemalocation Schema",
            "examples": [
              "#"
            ]
          }
        }
      },
      "success": {
        "$id": "#/properties/success",
        "type": "boolean",
        "const": false
      }
    }

  }, {

    "properties": {
      "data": {
        "type": "object",
        "title": "Schema of a  typical engine Assertion error ",
        "additionalProperties": false,
        "required": [
          "audit_type",
          "location",
          "message",
          "run_identifier",
          "run_timestamp"
        ],
        "properties": {
          "audit_type": {
            "type": "string",
            "const": "MHEA"
          },
          "location": {
            "type": "string",
            "title": "The location pointer in source where error occured"
          },
          "message": {
            "type": "string",
            "title": "Describes the assertion failure"
          },
          "run_identifier": {
            "type": "string",
            "title": "The unique server run identifier",
            "description": "Timestamp based unique run identifier for the run",
            "examples": ["20200221.041828549"]
          },
          "run_timestamp": {
            "type": "string",
            "title": "Timestamp for the run",
            "description": "Human readable timestamp in standard format",
            "examples": ["Fri Feb 21 16:18:28 2020"]
          }
        }
      },
      "success": {
        "type": "boolean",
        "const": false
      }
    }

  }, {

    "properties": {
      "data": {
        "$id": "#/properties/data",
        "type": "object",
        "title": "THE VALID MHEA RESPONSE STRUCTURE DATA",
        "additionalProperties": false,

        "required": [
          "audit_type",
          "audit_id",
          "audit_number",
          "length",
          "width",

          "energy_calc_counter",

          "pre_heat",
          "pre_cool",
          "pre_base",
          "post_heat",
          "post_cool",
          "post_base",

          "num_measure",
          "measures",

          "num_an_sav",
          "an_sav",

          "num_sir",
          "sir",

          "num_material",
          "material",

          "num_message",
          "message",

          "heat_comp_units",
          "heat_dd_base",
          "num_heat_comp",
          "heat_comp",

          "cool_comp_units",
          "cool_dd_base",
          "num_cool_comp",
          "cool_comp",

          "num_manj",
          "manj",

          "num_used_fuel",
          "used_fuel"
        ],

        "properties": {

          "audit_type": {
            "type": "string",
            "const": "MHEA"
          },

          "audit_number": {
            "type": "integer",
            "minimum": 1,
            "title": "Audit Number",
            "description": "The integer numeric identifier requried for the audit record, also mirrored in output but otherwise not used in analysis"
          },
          "audit_id": {
            "type": "integer",
            "minimum": 1,
            "title": "Audit ID",
            "description": "An optional integer numeric identifier for the audit, mirrored in output, but otherwise unused in analysis"
          },
          "length": {
            "type": "number",
            "minimum": 30,
            "maximum": 100,
            "title": "Length (ft)",
            "description": "The long dimension of the home in (ft)"
          },
          "width": {
            "type": "number",
            "minimum": 8,
            "maximum": 50,
            "title": "Width (ft)",
            "description": "The short dimension of the home in (ft)"
          },
          "energy_calc_counter": {
            "type": "integer",
            "description": "How many times did the bin method energy calculation/simulation get called"
          },

          "run_identifier": {
            "type": "string",
            "title": "The unique server run identifier",
            "description": "Timestamp based unique run identifier for the run",
            "examples": ["20200221.041828549"]
          },

          "run_timestamp": {
            "type": "string",
            "title": "Timestamp for the run",
            "description": "Human readable timestamp in standard format",
            "examples": ["Fri Feb 21 16:18:28 2020"]
          },

          "run_version": {
            "type": "string",
            "title": "Engine version used to compute results",
            "description": "Human readable timestamp in standard format",
            "examples": ["v10.0.1-80-g9fa80308 Tue Jan 28 16:58:21 CST 2020"]
          },

          "pre_heat": {
            "type": "number",
            "description": "Pre retrofit heating energy consumption (MMBtu)"
          },
          "pre_cool": {
            "type": "number",
            "description": "Pre retrofit cooling energy consumption (kWh)"
          },
          "pre_base": {
            "type": "number",
            "description": "Pre retrofit baseload energy consumption (kWh)"
          },
          "post_heat": {
            "type": "number",
            "description": "Post retrofit heating energy consumption (MMBtu)"
          },
          "post_cool": {
            "type": "number",
            "description": "Post retrofit cooling energy consumption (kWh)"
          },
          "post_base": {
            "type": "number",
            "description": "Post retrofit baseload energy consumption (kWh)"
          },

          "num_measure": {
            "type": "integer",
            "description": "The number of overall result measures (all reported measures)"
          },
          "measures": {
            "$ref": "#/definitions/measures"
          },

          "num_an_sav": {
            "type": "integer",
            "description": "The number of recommended measures in annual savings table"
          },
          "an_sav": {
            "$ref": "#/definitions/an_sav"
          },

          "num_an_asav": {
            "type": "integer",
            "description": "The number of recommended measures in annual savings table, adjusted with utility billing"
          },
          "an_asav": {
            "$ref": "#/definitions/an_asav"
          },

          "num_sir": {
            "type": "integer",
            "description": "The number of recommended measures in SIR economics table"
          },
          "sir": {
            "$ref": "#/definitions/sir"
          },

          "num_asir": {
            "type": "integer",
            "description": "The number of recommended measures in SIR economics table, adjusted with utility billing"
          },
          "asir": {
            "$ref": "#/definitions/asir"
          },

          "num_material": {
            "type": "integer",
            "description": "The number of records in material table"
          },
          "material": {
            "$ref": "#/definitions/material"
          },

          "num_amaterial": {
            "type": "integer",
            "description": "The number of records in material table, adjusted with utility billing"
          },
          "amaterial": {
            "$ref": "#/definitions/amaterial"
          },

          "num_message": {
            "type": "integer",
            "description": "The number of extra message strings"
          },
          "message": {
            "$ref": "#/definitions/message"
          },

          "heat_comp_units": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20,
            "description": "Units for heating energy utility bill comparison consumption"
          },
          "heat_dd_base": {
            "type": "integer",
            "description": "Heating base temperature degree days"
          },
          "num_heat_comp": {
            "type": "integer",
            "description": "Number of heating bills in comparison"
          },
          "heat_comp": {
            "$ref": "#/definitions/heat_comp"
          },

          "cool_comp_units": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20,
            "description": "Units for cooling energy utility bill comparison consumption"
          },
          "cool_dd_base": {
            "type": "integer",
            "description": "Cooling base temperature degree days"
          },
          "num_cool_comp": {
            "type": "integer",
            "description": "Number of cooling bills in comparison"
          },
          "cool_comp": {
            "$ref": "#/definitions/cool_comp"
          },

          "num_manj": {
            "type": "integer",
            "description": "The number of ASHRAE Manual J results"
          },
          "manj": {
            "$ref": "#/definitions/manj"
          },

          "num_used_fuel": {
            "type": "integer",
            "description": "The number fuel types were used"
          },
          "used_fuel": {
            "$ref": "#/definitions/used_fuel"
          }
        }
      },
      "success": {
        "type": "boolean",
        "const": true
      }
    }
  }],

  "definitions": {

    "measures": {
      "type": "array",
      "description": "The list of energy conservation measures",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "PK for the main set of measures, base 1"
          },
          "measure_id": {
            "type": "integer",
            "description": "Fixed measure id.  The index into the JSON input measure_active_flags[] array for this measure"
          },
          "audit_section_id": {
            "type": ["integer", "string"],
            "enum": [
              65, "audit",
               2, "wall",
              66, "window",
              67, "door",
               5, "ceiling",
               7, "floor",
              68, "wall_addition",
              69, "window_addition",
              70, "door_addition",
              71, "ceiling_addition",
              72, "floor_addition",
              73, "heating",
              23, "cooling",
              74, "ducts_and_infiltration",
              29, "water_heating",
              31, "refrigerator",
              33, "lighting",
              35, "health_and_safety",
              37, "itemized_cost"
            ],
            "title": "MHEA Audit Section ID",
            "description": "What part of the audit does this measure apply to. The IDs are listed in order of appearance in the audit"
          },
          "component_id": {
            "type": "number",
            "minimum": 0,
            "maximum": 2147483647,
            "title": "An optional identifier string that passes through the analysis",
            "description": "An optional identifier string used to identify an input record (e.g. Itemized Cost)"
          },
          "measure": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "The name of the measure"
          },
          "components": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "description": "The list of comma separated component codes effected by the measure"
          },
          "heating_mbtu": {
            "type": "number",
            "description": "Annual heating energy savings (MMBtu)"
          },
          "heating_sav": {
            "type": "number",
            "description": "Annual heating savings ($)"
          },
          "cooling_kwh": {
            "type": "number",
            "description": "Annual cooling energy savings (kWh)"
          },
          "cooling_sav": {
            "type": "number",
            "description": "Annual cooling savings ($)"
          },
          "baseload_kwh": {
            "type": "number",
            "description": "Annual baseload energy savings (kWh)"
          },
          "baseload_sav": {
            "type": "number",
            "description": "Annual baseload savings ($)"
          },
          "total_mbtu": {
            "type": "number",
            "description": "Total annual energy savings (MMBtu)"
          },
          "savings": {
            "type": "number",
            "description": "Total annual savings ($)"
          },
          "cost": {
            "type": "number",
            "description": "Total initial cost ($)"
          },
          "sir": {
            "type": "number",
            "description": "Life cycle Savings to Investment Ratio"
          },
          "lifetime": {
            "type": "integer",
            "description": "lifetime of the SIR calculation for the measure (years)"
          },
          "qtym": {
            "type": "number",
            "description": "The unit quantity of the material used"
          },
          "qtyl": {
            "type": "number",
            "description": "The unit quantity of the labor used (hr)"
          },
          "qtyi": {
            "type": "number",
            "description": "The unit quantity of any associated item cost"
          },
          "costum": {
            "type": "number",
            "description": "The unit material cost ($)"
          },
          "costul": {
            "type": "number",
            "description": "The unit labor cost ($/hr)"
          },
          "costi1": {
            "type": "number",
            "description": "The unit item cost ($)"
          },
          "costi2": {
            "type": "number",
            "description": "A second added cost ($)"
          },
          "desci2": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Description of the costi2 item"
          },
          "typei2": {
            "type": ["integer", "string"],
            "enum": [
               0, "none",
               1, "insulation",
               2, "miscellaneous_supplies",
               3, "windows",
               4, "heating_equipment",
               5, "cooling_equipment",
               6, "refrigerators",
               7, "hot_water_equipment",
               8, "lighting",
               10, "labor",
               11, "construction_materials_or_hardware",
               12, "doors",
               13, "health_and_safety_items",
               100, "other",
               101, "unspecified"
            ],
            "title": "Material Type ID",
            "description": "A fixed ID describing the type of material for costi2"
          },
          "costi3": {
            "type": "number",
            "description": "A third added cost ($)"
          },
          "desci3": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Description of the costi3 item"
          },
          "typei3": {
            "type": ["integer", "string"],
            "enum": [
               0, "none",
               1, "insulation",
               2, "miscellaneous_supplies",
               3, "windows",
               4, "heating_equipment",
               5, "cooling_equipment",
               6, "refrigerators",
               7, "hot_water_equipment",
               8, "lighting",
               10, "labor",
               11, "construction_materials_or_hardware",
               12, "doors",
               13, "health_and_safety_items",
               100, "other",
               101, "unspecified"
            ],
            "title": "Material Type ID",
            "description": "A fixed ID describing the type of material for costi3"
          }
        },
        "required": [
          "index",
          "measure_id",
          "audit_section_id",
          "component_id",
          "measure",
          "components",
          "heating_mbtu",
          "heating_sav",
          "cooling_kwh",
          "cooling_sav",
          "baseload_kwh",
          "baseload_sav",
          "total_mbtu",
          "savings",
          "cost",
          "sir",
          "qtym",
          "qtyl",
          "qtyi",
          "costum",
          "costul",
          "costi1",
          "costi2",
          "desci2",
          "typei2",
          "costi3",
          "desci3",
          "typei3"
        ]
      }
    },

    "an_sav": {
      "type": "array",
      "description": "The list annual measure savings",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "measure": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Measure name"
          },
          "components": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "description": "The comma separated list of component codes effected"
          },
          "heating_mbtu": {
            "type": "number",
            "description": "Annual heating energy savings (MMBtu)"
          },
          "heating_sav": {
            "type": "number",
            "description": "Annual heating savings ($)"
          },
          "cooling_kwh": {
            "type": "number",
            "description": "Annual cooling energy savings (kWh)"
          },
          "cooling_sav": {
            "type": "number",
            "description": "Annual cooling savings ($)"
          },
          "baseload_kwh": {
            "type": "number",
            "description": "Annual baseload energy savings (kWh)"
          },
          "baseload_sav": {
            "type": "number",
            "description": "Annual baseload savings ($)"
          },
          "total_mbtu": {
            "type": "number",
            "description": "Total annual energy savings (MMBtu)"
          }
        },
        "required": [
          "index",
          "measure",
          "components",
          "heating_mbtu",
          "heating_sav",
          "cooling_kwh",
          "cooling_sav",
          "baseload_kwh",
          "baseload_sav",
          "total_mbtu"
        ]
      }
    },

    "an_asav": {
      "type": "array",
      "description": "The list annual measure savings, adjusted with utility billing",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "measure": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Measure name"
          },
          "components": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "description": "The comma separated list of component codes effected"
          },
          "heating_mbtu": {
            "type": "number",
            "description": "Annual heating energy savings (MMBtu)"
          },
          "heating_sav": {
            "type": "number",
            "description": "Annual heating savings ($)"
          },
          "cooling_kwh": {
            "type": "number",
            "description": "Annual cooling energy savings (kWh)"
          },
          "cooling_sav": {
            "type": "number",
            "description": "Annual cooling savings ($)"
          },
          "baseload_kwh": {
            "type": "number",
            "description": "Annual baseload energy savings (kWh)"
          },
          "baseload_sav": {
            "type": "number",
            "description": "Annual baseload savings ($)"
          },
          "total_mbtu": {
            "type": "number",
            "description": "Total annual energy savings (MMBtu)"
          }
        },
        "required": [
          "index",
          "measure",
          "components",
          "heating_mbtu",
          "heating_sav",
          "cooling_kwh",
          "cooling_sav",
          "baseload_kwh",
          "baseload_sav",
          "total_mbtu"
        ]
      }
    },

    "sir": {
      "type": "array",
      "description": "The life cycle Savings to Investment Ratio detail",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "group": {
            "type": "integer",
            "description": "1 = Incidental Repairs, 2 = Energy Savings Measures, 3 = Health and Safety"
          },
          "measure": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Measure name"
          },
          "components": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "description": "The comma separated list of component codes effected"
          },
          "savings": {
            "type": "number",
            "description": "Total annual heating and cooling savings ($)"
          },
          "cost": {
            "type": "number",
            "description": "Total initial costs ($)"
          },
          "sir": {
            "type": "number",
            "description": "Computed Savings to Investment Ratio"
          },
          "ccost": {
            "type": "number",
            "description": "Cummulative initial cost ($)"
          },
          "csir": {
            "type": "number",
            "description": "Cummulative life cycle SIR"
          }
        },
        "required": [
          "index",
          "group",
          "measure",
          "components",
          "savings",
          "cost",
          "sir",
          "ccost",
          "csir"
        ]
      }
    },

    "asir": {
      "type": "array",
      "description": "The life cycle Savings to Investment Ratio detail, adjusted with utility billing",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "group": {
            "type": "integer",
            "description": "1 = Incidental Repairs, 2 = Energy Savings Measures, 3 = Health and Safety"
          },
          "measure": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Measure name"
          },
          "components": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "description": "The comma separated list of component codes effected"
          },
          "savings": {
            "type": "number",
            "description": "Total annual heating and cooling savings ($)"
          },
          "cost": {
            "type": "number",
            "description": "Total initial costs ($)"
          },
          "sir": {
            "type": "number",
            "description": "Computed Savings to Investment Ratio"
          },
          "ccost": {
            "type": "number",
            "description": "Cummulative initial cost ($)"
          },
          "csir": {
            "type": "number",
            "description": "Cummulative life cycle SIR"
          }
        },
        "required": [
          "index",
          "group",
          "measure",
          "components",
          "savings",
          "cost",
          "sir",
          "ccost",
          "csir"
        ]
      }
    },

    "material": {
      "type": "array",
      "description": "The materials list",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "measure_index": {
            "type": "integer",
            "description": "FK into the measures results index PK field"
          },
          "material_id": {
            "type": "integer",
            "description": "Fixed material ID from the measure_costs[] JSON input"
          },
          "material": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Material name"
          },
          "type": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Material type"
          },
          "quantity": {
            "type": "number",
            "description": "How many material items"
          },
          "units": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20,
            "description": "Material quantity units"
          }
        },
        "required": [
          "index",
          "material",
          "type",
          "quantity",
          "units"
        ]
      }
    },

    "amaterial": {
      "type": "array",
      "description": "The materials list, adjusted with utility billing",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the measure material"
          },
          "measure_index": {
            "type": "integer",
            "description": "FK into the measures results index PK field"
          },
          "material_id": {
            "type": "integer",
            "description": "Fixed material ID from the measure_costs[] JSON input"
          },
          "material": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Material name"
          },
          "type": {
            "type": "string",
            "minLength": 0,
            "maxLength": 80,
            "description": "Material type"
          },
          "quantity": {
            "type": "number",
            "description": "How many material items"
          },
          "units": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20,
            "description": "Material quantity units"
          }
        },
        "required": [
          "index",
          "material",
          "type",
          "quantity",
          "units"
        ]
      }
    },

    "message": {
      "type": "array",
      "description": "The list of extra message strings from the analysis",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the message"
          },
          "msg": {
            "type": "string",
            "minLength": 0,
            "maxLength": 512,
            "description": "Extra messages and notes from analysis"
          }
        },
        "required": [
          "index",
          "msg"
        ]
      }
    },

    "heat_comp": {
      "type": "array",
      "description": "Heating utility bill comparison",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the result and sort order"
          },
          "year": {
            "type": "integer",
            "description": "Utility bill reading year"
          },
          "month": {
            "type": "integer",
            "description": "Utility bill reading month"
          },
          "day": {
            "type": "integer",
            "description": "Utility bill reading day"
          },
          "period_days": {
            "type": "integer",
            "description": "Utility bill reading period in days"
          },
          "consump_act": {
            "type": "integer",
            "description": "Actual consumption in units listed"
          },
          "consump_pred": {
            "type": "integer",
            "description": "Predicted consumption in units listed"
          },
          "dd_act": {
            "type": ["integer", "null"],
            "description": "Actual degree days or Null if not entered"
          },
          "dd_pred": {
            "type": "integer",
            "description": "Predicted degree days"
          }
        },
        "required": [
          "index",
          "year",
          "month",
          "day",
          "period_days",
          "consump_act",
          "consump_pred",
          "dd_act",
          "dd_pred"
        ]
      }
    },

    "cool_comp": {
      "type": "array",
      "description": "Cooling utility bill comparison",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Number of the result and sort order"
          },
          "year": {
            "type": "integer",
            "description": "Utility bill reading year"
          },
          "month": {
            "type": "integer",
            "description": "Utility bill reading month"
          },
          "day": {
            "type": "integer",
            "description": "Utility bill reading day"
          },
          "period_days": {
            "type": "integer",
            "description": "Utility bill reading period in days"
          },
          "consump_act": {
            "type": "integer",
            "description": "Actual consumption in units listed"
          },
          "consump_pred": {
            "type": "integer",
            "description": "Predicted consumption in units listed"
          },
          "dd_act": {
            "type": ["integer", "null"],
            "description": "Actual degree days or Null if not entered"
          },
          "dd_pred": {
            "type": "integer",
            "description": "Predicted degree days"
          }
        },
        "required": [
          "index",
          "year",
          "month",
          "day",
          "period_days",
          "consump_act",
          "consump_pred",
          "dd_act",
          "dd_pred"
        ]
      }
    },

    "manj": {
      "type": "array",
      "description": "The number of ASHRAE Manual J results",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "description": "Simple counter for this array"
          },
          "heatcool": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5,
            "description": "Heat or Cool"
          },
          "type": {
            "type": "string",
            "minLength": 0,
            "maxLength": 21,
            "description": "Component type (wall, door etc..) and units for load"
          },
          "name": {
            "type": "string",
            "minLength": 0,
            "maxLength": 21,
            "description": "Name of dwelling component, (UNUSED)"
          },
          "area_vol": {
            "type": "number",
            "description": "Surface area or volume of component (SqFt or Cubic Foot) (UNUSED) "
          },
          "pre_load": {
            "type": "number",
            "description": "Pre retrofit peak load (Btu/hr or tons)"
          },
          "post_load": {
            "type": "number",
            "description": "Post retrofit peak load (Btu/hr or tons)"
          }
        },
        "required": [
          "index",
          "heatcool",
          "type",
          "name",
          "area_vol",
          "pre_load",
          "post_load"
        ]
      }
    },

    "used_fuel": {
      "type": "array",
      "description": "The list of fuels used and pricing",
      "uniqueItems": true,
      "items": {
        "type": "object",
        "properties": {
          "fuel_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 13,
            "description": "Name of the fuel used"
          },
          "fuel_cost": {
            "type": "number",
            "description": "Unit cost of fuel"
          },
          "fuel_cost_units": {
            "type": "string",
            "minLength": 1,
            "maxLength": 13,
            "description": "Fuel price units"
          },
          "fuel_cost_per_mbtu": {
            "type": "number",
            "description": "Cost per MMBtu"
          }
        },
        "required": [
          "fuel_name",
          "fuel_cost",
          "fuel_cost_units",
          "fuel_cost_per_mbtu"
        ]
      }
    }

  }
}
