Heat Pump Advisor

Heat Pump Advisor · GPT Actions

WattSavy API

API for comparing heating systems and fetching weather data.

  • GET /weather/{city}Get weather data for a specific city.
  • POST /heating-comparisonCompare heating systems based on user input.
  • POST /manual-j-sizingPerform a simplified Manual J calculation for HVAC sizing
  • GET /heat-pump-part/{part_id}Get information about a specific heat pump part
原始 API 定义
{
  "openapi": "3.1.0",
  "info": {
    "title": "WattSavy API",
    "description": "API for comparing heating systems and fetching weather data.",
    "version": "1.0.1"
  },
  "servers": [
    {
      "url": "https://wattsavy.com",
      "description": "Main API server"
    }
  ],
  "paths": {
    "/weather/{city}": {
      "get": {
        "operationId": "getWeather",
        "summary": "Get weather data for a specific city.",
        "parameters": [
          {
            "name": "city",
            "in": "path",
            "required": true,
            "description": "Name of the city to get weather information for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "A JSON object containing weather data",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "city": {
                      "type": "string",
                      "description": "Name of the city"
                    },
                    "temperature": {
                      "type": "string",
                      "description": "Temperature in the city"
                    },
                    "description": {
                      "type": "string",
                      "description": "Weather description (e.g., sunny, cloudy)"
                    },
                    "humidity": {
                      "type": "string",
                      "description": "Humidity level in percentage"
                    },
                    "wind_speed": {
                      "type": "string",
                      "description": "Wind speed in km/h"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - API key missing or invalid"
          }
        }
      }
    },
    "/heating-comparison": {
      "post": {
        "operationId": "compareHeatingSystems",
        "summary": "Compare heating systems based on user input.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeatingComparisonRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Heating comparison results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeatingComparison"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - API key missing or invalid"
          }
        }
      }
    },
    "/manual-j-sizing": {
      "post": {
        "operationId": "manualJSizing",
        "summary": "Perform a simplified Manual J calculation for HVAC sizing",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManualJInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Manual J calculation results",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManualJOutput"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - API key missing or invalid"
          }
        }
      }
    },
    "/heat-pump-part/{part_id}": {
      "get": {
        "operationId": "getHeatPumpPart",
        "summary": "Get information about a specific heat pump part",
        "parameters": [
          {
            "name": "part_id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the heat pump part",
            "schema": {
              "type": "string"
            },
            "example": "COMP001"
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed information about the heat pump part",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeatPumpPart"
                },
                "example": {
                  "id": "COMP001",
                  "name": "Compressor",
                  "description": "The heart of the heat pump system, responsible for circulating refrigerant.",
                  "compatible_models": [
                    "HP2000",
                    "HP3000",
                    "ECO500"
                  ],
                  "average_lifespan": "10-15 years",
                  "common_issues": [
                    "Overheating",
                    "Electrical failure",
                    "Refrigerant leaks"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized - API key missing or invalid"
          },
          "404": {
            "description": "Part not found"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "HeatingComparisonRequest": {
        "type": "object",
        "properties": {
          "annual_heating_demand": {
            "type": "number",
            "description": "Annual heating demand in kWh"
          },
          "gas_price": {
            "type": "number",
            "description": "Price of gas per kWh"
          },
          "electricity_rate": {
            "type": "number",
            "description": "Electricity rate per kWh"
          },
          "gas_efficiency": {
            "type": "number",
            "description": "Efficiency of the gas heating system (COP)"
          },
          "heat_pump_installation_cost": {
            "type": "number",
            "description": "Installation cost for the heat pump"
          },
          "gas_co2_per_kwh": {
            "type": "number",
            "description": "CO2 emissions per kWh for gas"
          },
          "heat_pump_co2_per_kwh": {
            "type": "number",
            "description": "CO2 emissions per kWh for heat pump"
          },
          "monthly_temperatures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonthlyTemperature"
            }
          }
        },
        "required": [
          "annual_heating_demand",
          "gas_price",
          "electricity_rate",
          "gas_efficiency",
          "heat_pump_installation_cost",
          "gas_co2_per_kwh",
          "heat_pump_co2_per_kwh",
          "monthly_temperatures"
        ]
      },
      "HeatingComparison": {
        "type": "object",
        "properties": {
          "annual_gas_cost": {
            "type": "number",
            "description": "Annual cost for gas heating"
          },
          "annual_heat_pump_cost": {
            "type": "number",
            "description": "Annual cost for heat pump heating"
          },
          "years_to_breakeven": {
            "type": "number",
            "description": "Years required to breakeven the heat pump installation cost"
          },
          "annual_co2_savings": {
            "type": "number",
            "description": "Annual CO2 savings by using a heat pump"
          },
          "monthly_distribution": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            },
            "description": "Monthly heating distribution in kWh"
          },
          "breakeven_cop": {
            "type": "number",
            "description": "Break-even Coefficient of Performance (CoP)"
          },
          "annual_costs": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            },
            "description": "Annual costs comparison between gas and heat pump"
          }
        },
        "required": [
          "annual_gas_cost",
          "annual_heat_pump_cost",
          "years_to_breakeven",
          "annual_co2_savings",
          "monthly_distribution",
          "breakeven_cop",
          "annual_costs"
        ]
      },
      "MonthlyTemperature": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "description": "Name of the month"
          },
          "temperature": {
            "type": "number",
            "description": "Average temperature for the month in °C"
          }
        },
        "required": [
          "month",
          "temperature"
        ]
      },
      "ManualJInput": {
        "type": "object",
        "properties": {
          "square_footage": {
            "type": "number",
            "description": "Total square footage of the home"
          },
          "climate_zone": {
            "type": "string",
            "description": "Climate zone (e.g., '1A', '3B', '5C')"
          },
          "insulation_quality": {
            "type": "string",
            "description": "Insulation quality (poor, average, good)"
          },
          "num_windows": {
            "type": "integer",
            "description": "Number of windows in the home"
          },
          "building_orientation": {
            "type": "string",
            "description": "Primary orientation of the building (N, S, E, W)"
          },
          "num_occupants": {
            "type": "integer",
            "description": "Number of occupants in the home"
          }
        },
        "required": [
          "square_footage",
          "climate_zone",
          "insulation_quality",
          "num_windows",
          "building_orientation",
          "num_occupants"
        ]
      },
      "ManualJOutput": {
        "type": "object",
        "properties": {
          "heating_load": {
            "type": "number",
            "description": "Estimated heating load in BTU/h"
          },
          "cooling_load": {
            "type": "number",
            "description": "Estimated cooling load in BTU/h"
          },
          "recommended_system_size": {
            "type": "number",
            "description": "Recommended heat pump size in tons"
          }
        },
        "required": [
          "heating_load",
          "cooling_load",
          "recommended_system_size"
        ]
      },
      "HeatPumpPart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for the part",
            "example": "COMP001"
          },
          "name": {
            "type": "string",
            "description": "Name of the part",
            "example": "Compressor"
          },
          "description": {
            "type": "string",
            "description": "Brief description of the part's function",
            "example": "The heart of the heat pump system, responsible for circulating refrigerant."
          },
          "compatible_models": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of compatible heat pump models",
            "example": [
              "HP2000",
              "HP3000",
              "ECO500"
            ]
          },
          "average_lifespan": {
            "type": "string",
            "nullable": true,
            "description": "Average lifespan of the part",
            "example": "10-15 years"
          },
          "common_issues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "description": "List of common issues with this part",
            "example": [
              "Overheating",
              "Electrical failure",
              "Refrigerant leaks"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "compatible_models"
        ]
      }
    }
  }
}