{
 "openapi": "3.1.0",
 "info": {
  "title": "Deep Almanac: Australian residential electricity plans",
  "version": "1.0.0",
  "summary": "Every generally available residential electricity plan in Australia's National Electricity Market, with an estimated yearly bill per network at three usage levels, ranked.",
  "description": "Residential electricity plans from the Australian Energy Regulator's Consumer Data Right feed, grouped by distribution network (NSW, ACT, Queensland, SA, Tasmania, Victoria). Each plan is priced for a low, medium and high usage household per network, with and without controlled load; medium is the regulator's reference usage (DMO or VDO) where one exists. Bills count conditional discounts, with the bill without them beside. Plans open only to some households are left out of rankings; plans with demand charges are not priced. No solar export is assumed.\n\nEvery file is static JSON; no authentication, CORS open. This is reference data, not advice about which plan to choose.",
  "termsOfService": "https://deepalmanac.com/terms",
  "contact": {
   "name": "Deep Almanac",
   "url": "https://deepalmanac.com"
  },
  "license": {
   "name": "Deep Almanac's own work CC BY 4.0; source data under its own terms, listed in licences in each index.json",
   "url": "https://deepalmanac.com/terms#data-licences"
  }
 },
 "servers": [
  {
   "url": "https://deepalmanac.com"
  }
 ],
 "security": [],
 "tags": [
  {
   "name": "electricity",
   "description": "Australian residential electricity plans",
   "externalDocs": {
    "description": "Page",
    "url": "https://deepalmanac.com/au/energy/electricity/"
   }
  }
 ],
 "paths": {
  "/au/energy/electricity/v1/index.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityIndex",
    "summary": "Dataset index",
    "description": "The dataset's files, timestamps, the default view, the households priced and the URL templates.",
    "responses": {
     "200": {
      "description": "Dataset index.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "dataset": {
           "type": "string",
           "description": "Dataset name."
          },
          "page": {
           "type": "string",
           "description": "Human-readable page for the dataset.",
           "format": "uri"
          },
          "start_here": {
           "type": [
            "object",
            "null"
           ],
           "description": "The small file that answers most questions here: answer_file (a URL template), inputs (how to fill it), example (a filled-in URL) and sometimes also (the next file for a common variant).",
           "properties": {
            "answer_file": {
             "type": "string",
             "description": "URL template of the answer file."
            },
            "inputs": {
             "type": "string",
             "description": "What each placeholder takes."
            },
            "example": {
             "type": "string",
             "description": "A filled-in answer file URL.",
             "format": "uri"
            },
            "also": {
             "type": "string",
             "description": "Another file for a common variant of the question."
            },
            "lookup": {
             "type": "string",
             "description": "Where present: a /v1/lookup URL that takes the reader's own numbers, applies the bucket rules and redirects to the answer file.",
             "format": "uri"
            },
            "compare": {
             "type": "string",
             "description": "Where present: a /v1/compare URL that ranks every rate at the reader's exact amount and answers with JSON directly.",
             "format": "uri"
            }
           }
          },
          "generated_at": {
           "type": "string",
           "description": "When this index was written, UTC, YYYY-MM-DDTHH:MM:SSZ.",
           "format": "date-time",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "fetched_at": {
           "type": "string",
           "description": "When the source was last fetched, UTC, YYYY-MM-DDTHH:MM:SSZ.",
           "format": "date-time",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "data_as_of": {
           "type": "string",
           "description": "How current the data is: a date (YYYY-MM-DD) or a UTC timestamp (YYYY-MM-DDTHH:MM:SSZ); data_as_of_basis says what it means here.",
           "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$"
          },
          "data_as_of_basis": {
           "type": "string",
           "description": "One sentence saying what data_as_of means for this dataset."
          },
          "source": {
           "type": "string",
           "description": "Data source statement."
          },
          "licence_note": {
           "type": "string",
           "description": "Terms of reuse and the not-advice note."
          },
          "licences": {
           "type": "array",
           "description": "What may be reused and on what terms, layer by layer: each layer's source, the fields it covers, its licence and the attribution it asks for. The last layer is Deep Almanac's own work (CC BY 4.0), covering every field no other layer names. Reusing a field means meeting the terms of the layer that covers it.",
           "items": {
            "type": "object",
            "required": [
             "layer",
             "covers",
             "licence",
             "licence_url",
             "attribution"
            ],
            "properties": {
             "layer": {
              "type": "string",
              "description": "The source."
             },
             "covers": {
              "type": "string",
              "description": "The fields it covers."
             },
             "licence": {
              "type": "string",
              "description": "Its licence, or why there is none."
             },
             "licence_url": {
              "type": [
               "string",
               "null"
              ],
              "format": "uri",
              "description": "The licence's own page, where it has one."
             },
             "attribution": {
              "type": "string",
              "description": "The credit the layer asks for."
             }
            }
           }
          },
          "questions": {
           "type": "string",
           "description": "This dataset's questions.json: what to ask the reader first and which file answers each.",
           "format": "uri"
          },
          "openapi": {
           "type": "string",
           "description": "This dataset's OpenAPI document.",
           "format": "uri"
          },
          "status": {
           "type": "string",
           "description": "https://deepalmanac.com/status.json: when every dataset was last fetched and when it counts as overdue.",
           "format": "uri"
          },
          "llms": {
           "type": "string",
           "description": "https://deepalmanac.com/llms.txt: the site's guide for language models.",
           "format": "uri"
          },
          "files": {
           "type": "array",
           "description": "Every top-level file this dataset publishes, as absolute URLs.",
           "items": {
            "type": "string",
            "format": "uri"
           }
          },
          "file_guide": {
           "type": "array",
           "description": "What each of those files holds, in the same order.",
           "items": {
            "type": "object",
            "properties": {
             "file": {
              "type": "string"
             },
             "url": {
              "type": "string",
              "format": "uri"
             },
             "description": {
              "type": "string"
             }
            }
           }
          },
          "plan_count": {
           "type": "integer",
           "description": "Residential electricity plans normalised."
          },
          "retailer_count": {
           "type": "integer",
           "description": "Retailers with at least one plan."
          },
          "default_view": {
           "type": "object",
           "properties": {
            "network": {
             "type": "string"
            },
            "usage": {
             "type": "string"
            },
            "controlled_load": {
             "type": "boolean"
            }
           }
          },
          "households": {
           "type": "string",
           "description": "How the households are defined."
          },
          "not_advice": {
           "type": "string"
          },
          "top_dir": {
           "type": "object",
           "properties": {
            "url_template": {
             "type": "string"
            },
            "networks": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "description": {
             "type": "string"
            }
           }
          },
          "networks_dir": {
           "type": "object",
           "properties": {
            "url_template": {
             "type": "string"
            },
            "networks": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "description": {
             "type": "string"
            }
           }
          }
         },
         "required": [
          "dataset",
          "page",
          "start_here",
          "generated_at",
          "fetched_at",
          "data_as_of",
          "data_as_of_basis",
          "source",
          "licence_note",
          "licences",
          "questions",
          "openapi",
          "status",
          "llms",
          "files",
          "top_dir",
          "networks_dir"
         ]
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  },
  "/au/energy/electricity/v1/questions.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityQuestions",
    "summary": "What to ask a reader before answering",
    "description": "The questions readers ask about electricity plans, the inputs to collect first (the network from the postcode, usage, controlled load), which file answers each, the fields most often misread (conditional discounts, restricted plans, stale records), and what this dataset cannot answer. Read this first.",
    "responses": {
     "200": {
      "description": "What to ask a reader before answering.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityQuestionGuide"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  },
  "/au/energy/electricity/v1/networks.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityNetworks",
    "summary": "Every network",
    "description": "Each network's state, distributors, the households priced, plan counts and the cheapest plan at each usage level.",
    "responses": {
     "200": {
      "description": "Every network.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityNetworks"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  },
  "/au/energy/electricity/v1/postcodes.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityPostcodes",
    "summary": "Postcode to network",
    "description": "Postcode to network slugs, from the plans' own postcode lists. A boundary postcode lists more than one.",
    "responses": {
     "200": {
      "description": "Postcode to network.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityPostcodes"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  },
  "/au/energy/electricity/v1/top/{network}.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityTop",
    "summary": "The cheapest plans for one network",
    "description": "A few kB: the cheapest plan open to all from each retailer for each household, with the cheapest without conditional discounts and the cheapest including restricted plans.",
    "responses": {
     "200": {
      "description": "The cheapest plans for one network.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityTopFile"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    },
    "parameters": [
     {
      "name": "network",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "ausgrid",
        "endeavour",
        "essential-energy",
        "essential-energy-far-west",
        "energex",
        "ergon",
        "sa-power-networks",
        "evoenergy",
        "tasnetworks",
        "citipower",
        "powercor",
        "jemena",
        "ausnet",
        "united-energy"
       ]
      },
      "description": "Network slug, from networks.json or postcodes.json."
     }
    ]
   }
  },
  "/au/energy/electricity/v1/networks/{network}.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityNetworkPlans",
    "summary": "Every plan in one network",
    "description": "Every plan offered in the network with its estimated bill at each usage level, prices, conditions and restrictions. Up to about 1 MB.",
    "responses": {
     "200": {
      "description": "Every plan in one network.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityNetworkFile"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    },
    "parameters": [
     {
      "name": "network",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "ausgrid",
        "endeavour",
        "essential-energy",
        "essential-energy-far-west",
        "energex",
        "ergon",
        "sa-power-networks",
        "evoenergy",
        "tasnetworks",
        "citipower",
        "powercor",
        "jemena",
        "ausnet",
        "united-energy"
       ]
      },
      "description": "Network slug, from networks.json or postcodes.json."
     }
    ]
   }
  },
  "/au/energy/electricity/v1/retailers.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityRetailers",
    "summary": "Every retailer",
    "description": "Each retailer's feed status and plan counts.",
    "responses": {
     "200": {
      "description": "Every retailer.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/ElectricityRetailers"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  },
  "/au/energy/electricity/v1/openapi.json": {
   "get": {
    "tags": [
     "electricity"
    ],
    "operationId": "getElectricityOpenApi",
    "summary": "This OpenAPI document",
    "description": "OpenAPI 3.1 description of this dataset (https://deepalmanac.com/openapi.json lists every dataset's document).",
    "responses": {
     "200": {
      "description": "This OpenAPI document.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "404": {
      "description": "Not published, or the path is wrong; static hosting returns the site's 404 page (HTML)."
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "ElectricityRate": {
    "type": "object",
    "description": "One usage rate, cents per kWh.",
    "properties": {
     "type": {
      "type": "string",
      "description": "SINGLE, or the time of use period type (PEAK, OFF_PEAK, SHOULDER, SOLAR_SPONGE...)."
     },
     "name": {
      "type": [
       "string",
       "null"
      ],
      "description": "The retailer's name for a time of use period."
     },
     "c_per_kwh": {
      "type": [
       "number",
       "null"
      ],
      "description": "Cents per kWh."
     },
     "up_to_kwh": {
      "type": "number",
      "description": "Block rate: this price applies to the first up_to_kwh in each `per`. Absent on the last block."
     },
     "per": {
      "type": "string",
      "description": "ISO 8601 duration of a block (P1D, P1M, P3M, P1Y)."
     },
     "when": {
      "type": "string",
      "description": "Time of use window: days and HH:MM-HH:MM, joined by '; '."
     }
    }
   },
   "ElectricityPrices": {
    "type": "object",
    "description": "The plan's prices in its first tariff period.",
    "properties": {
     "daily_supply_c": {
      "type": [
       "number",
       "null"
      ],
      "description": "Daily supply charge, cents."
     },
     "rates": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ElectricityRate"
      }
     },
     "seasonal": {
      "type": "boolean",
      "description": "True when the plan has more than one tariff period (prices change by season); only the first is shown, every period is priced."
     }
    }
   },
   "ElectricityAnnualBill": {
    "type": "object",
    "properties": {
     "total": {
      "type": "number",
      "description": "Estimated bill for a year, dollars, conditional discounts counted."
     },
     "without_conditional": {
      "type": "number",
      "description": "The same bill with conditional discounts left out."
     }
    }
   },
   "ElectricityPlanRow": {
    "type": "object",
    "description": "One plan in one network.",
    "properties": {
     "plan_id": {
      "type": "string",
      "description": "The CDR planId."
     },
     "name": {
      "type": "string",
      "description": "The plan's display name."
     },
     "retailer": {
      "type": "string",
      "description": "Brand name."
     },
     "brand_slug": {
      "type": "string",
      "description": "Slug of the brand (one per retailer in top lists)."
     },
     "retailer_slug": {
      "type": "string",
      "description": "Slug of the CDR data holder (retailers.json)."
     },
     "offer_type": {
      "type": "string",
      "description": "MARKET, STANDING (a default offer, capped by the DMO or VDO) or REGULATED.",
      "enum": [
       "MARKET",
       "STANDING",
       "REGULATED"
      ]
     },
     "tariff": {
      "type": "string",
      "description": "single_rate, time_of_use, flexible or other.",
      "enum": [
       "single_rate",
       "time_of_use",
       "flexible",
       "other"
      ]
     },
     "controlled_load": {
      "type": "boolean",
      "description": "The plan prices a controlled load meter."
     },
     "restricted": {
      "type": "boolean",
      "description": "Open only to some households; left out of rankings."
     },
     "restrictions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Who the plan is for."
     },
     "conditions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Conditions any household can meet (smart meter, online only, new customers)."
     },
     "price_fixed": {
      "type": "boolean",
      "description": "The retailer says prices are fixed for the contract."
     },
     "contract_term": {
      "type": [
       "string",
       "null"
      ],
      "description": "CDR termType."
     },
     "exit_fee": {
      "type": [
       "number",
       "null"
      ],
      "description": "Largest exit fee, dollars as billed."
     },
     "feed_in_c": {
      "type": [
       "number",
       "null"
      ],
      "description": "Highest retailer-paid flat solar feed-in rate, cents per kWh. Not counted in any bill."
     },
     "feed_in_time_varying_c": {
      "type": [
       "array",
       "null"
      ],
      "items": {
       "type": "number"
      },
      "description": "[lowest, highest] retailer-paid rate, cents per kWh, when the plan pays feed-in only by time of day; otherwise null."
     },
     "prices": {
      "$ref": "#/components/schemas/ElectricityPrices"
     },
     "last_updated": {
      "type": [
       "string",
       "null"
      ],
      "description": "When the retailer last updated the plan.",
      "format": "date-time"
     },
     "record_stale": {
      "type": "boolean",
      "description": "Last updated more than 120 days before the fetch."
     },
     "unpriced_reason": {
      "type": [
       "string",
       "null"
      ],
      "description": "Why the plan has no estimate (a demand charge, for one)."
     },
     "source_url": {
      "type": "string",
      "description": "The plan's record in the CDR feed.",
      "format": "uri"
     },
     "annual": {
      "type": [
       "object",
       "null"
      ],
      "properties": {
       "low": {
        "$ref": "#/components/schemas/ElectricityAnnualBill"
       },
       "medium": {
        "$ref": "#/components/schemas/ElectricityAnnualBill"
       },
       "high": {
        "$ref": "#/components/schemas/ElectricityAnnualBill"
       }
      },
      "description": "Estimated bill per usage level; null when not priced."
     },
     "medium_parts": {
      "type": "object",
      "description": "The medium bill broken down, dollars.",
      "properties": {
       "usage": {
        "type": "number"
       },
       "supply": {
        "type": "number"
       },
       "controlled_load": {
        "type": [
         "number",
         "null"
        ]
       },
       "discount": {
        "type": "number"
       },
       "recurring_fees": {
        "type": "number"
       },
       "usage_split": {
        "type": "object",
        "additionalProperties": {
         "type": "number"
        },
        "description": "Share of the medium household's general kWh in each rate type."
       }
      }
     },
     "discounts_not_counted": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "One-off or dollar credits left out of every bill."
     },
     "recurring_fee_names": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Yearly membership-type fees included in the bill."
     },
     "controlled_load_option": {
      "type": "string",
      "description": "The controlled load tariff priced."
     }
    },
    "required": [
     "plan_id",
     "name",
     "retailer",
     "annual"
    ]
   },
   "ElectricityTopEntry": {
    "type": "object",
    "properties": {
     "rank": {
      "type": "integer"
     },
     "retailer": {
      "type": "string"
     },
     "plan": {
      "type": "string"
     },
     "plan_id": {
      "type": "string"
     },
     "annual_bill": {
      "type": "number",
      "description": "Estimated yearly bill, dollars (conditional discounts counted, except in cheapest_without_conditional_discounts)."
     },
     "annual_bill_without_conditional_discounts": {
      "type": "number"
     },
     "tariff": {
      "type": "string"
     },
     "offer_type": {
      "type": "string"
     },
     "daily_supply_c": {
      "type": [
       "number",
       "null"
      ]
     },
     "usage_c_per_kwh": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ElectricityRate"
      }
     },
     "conditions": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "exit_fee": {
      "type": [
       "number",
       "null"
      ]
     },
     "feed_in_c": {
      "type": [
       "number",
       "null"
      ]
     },
     "feed_in_time_varying_c": {
      "type": [
       "array",
       "null"
      ],
      "items": {
       "type": "number"
      }
     },
     "last_updated": {
      "type": [
       "string",
       "null"
      ]
     },
     "source_url": {
      "type": "string",
      "format": "uri"
     },
     "record_stale": {
      "type": "boolean",
      "description": "Present and true only on a stale record."
     },
     "restrictions": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Present only on a restricted plan (cheapest_including_restricted_plans): who it is for, in networks/{network}.json's words; also its first conditions."
     },
     "discounts_not_counted": {
      "type": "array",
      "items": {
       "type": "string"
      }
     }
    }
   },
   "ElectricityTopView": {
    "type": "object",
    "description": "One household.",
    "properties": {
     "household": {
      "type": "string"
     },
     "annual_kwh": {
      "type": "number"
     },
     "controlled_load_kwh": {
      "type": [
       "number",
       "null"
      ]
     },
     "retailers_ranked": {
      "type": "integer"
     },
     "standing_offer_benchmark": {
      "type": [
       "object",
       "null"
      ],
      "description": "The retailers' default (standing) offers priced for this household: offers, retailers, annual_bill_range, annual_bill_median, cheapest_plan_saves_vs_median and major_retailers[] (Origin, AGL, EnergyAustralia: plan, tariff, annual_bill, own_standing_offers_range, cheapest_plan_saves). Open offers only; null when there are none."
     },
     "entries": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ElectricityTopEntry"
      },
      "description": "The cheapest plan open to all from each retailer, cheapest first."
     },
     "cheapest_without_conditional_discounts": {
      "oneOf": [
       {
        "$ref": "#/components/schemas/ElectricityTopEntry"
       },
       {
        "type": "null"
       }
      ]
     },
     "cheapest_including_restricted_plans": {
      "oneOf": [
       {
        "$ref": "#/components/schemas/ElectricityTopEntry"
       },
       {
        "type": "null"
       }
      ]
     }
    }
   },
   "ElectricityTopFile": {
    "type": "object",
    "properties": {
     "network": {
      "type": "string"
     },
     "network_name": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "data_as_of": {
      "type": "string",
      "format": "date-time"
     },
     "how_to_read": {
      "type": "string"
     },
     "full_list": {
      "type": "string",
      "format": "uri"
     },
     "page": {
      "type": "string",
      "format": "uri"
     },
     "views": {
      "type": "object",
      "properties": {
       "low": {
        "$ref": "#/components/schemas/ElectricityTopView"
       },
       "medium": {
        "$ref": "#/components/schemas/ElectricityTopView"
       },
       "high": {
        "$ref": "#/components/schemas/ElectricityTopView"
       },
       "low_controlled_load": {
        "$ref": "#/components/schemas/ElectricityTopView"
       },
       "medium_controlled_load": {
        "$ref": "#/components/schemas/ElectricityTopView"
       },
       "high_controlled_load": {
        "$ref": "#/components/schemas/ElectricityTopView"
       }
      }
     }
    },
    "required": [
     "network",
     "views"
    ]
   },
   "ElectricityNetworkFile": {
    "type": "object",
    "properties": {
     "network": {
      "type": "string"
     },
     "network_name": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "data_as_of": {
      "type": "string",
      "format": "date-time"
     },
     "plan_count": {
      "type": "integer"
     },
     "top": {
      "type": "string",
      "format": "uri"
     },
     "plans": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ElectricityPlanRow"
      },
      "description": "Priced plans without controlled load first, then with, by the medium bill; unpriced plans last."
     }
    },
    "required": [
     "network",
     "plans"
    ]
   },
   "ElectricityNetworkSummary": {
    "type": "object",
    "properties": {
     "network": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "state": {
      "type": "string"
     },
     "distributors": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "usage": {
      "type": "object",
      "properties": {
       "low": {
        "type": "object",
        "properties": {
         "annual_kwh": {
          "type": "number"
         },
         "controlled_load_kwh": {
          "type": "number"
         },
         "describe": {
          "type": "string"
         }
        }
       },
       "medium": {
        "type": "object",
        "properties": {
         "annual_kwh": {
          "type": "number"
         },
         "controlled_load_kwh": {
          "type": "number"
         },
         "describe": {
          "type": "string"
         }
        }
       },
       "high": {
        "type": "object",
        "properties": {
         "annual_kwh": {
          "type": "number"
         },
         "controlled_load_kwh": {
          "type": "number"
         },
         "describe": {
          "type": "string"
         }
        }
       }
      }
     },
     "plans": {
      "type": "integer"
     },
     "plans_priced": {
      "type": "integer"
     },
     "plans_ranked": {
      "type": "integer",
      "description": "Priced, open to all, without controlled load."
     },
     "plans_ranked_controlled_load": {
      "type": "integer"
     },
     "retailers": {
      "type": "integer"
     },
     "cheapest": {
      "type": "object",
      "properties": {
       "low": {
        "type": "object",
        "properties": {
         "retailer": {
          "type": "string"
         },
         "plan": {
          "type": "string"
         },
         "annual_bill": {
          "type": "number"
         }
        }
       },
       "medium": {
        "type": "object",
        "properties": {
         "retailer": {
          "type": "string"
         },
         "plan": {
          "type": "string"
         },
         "annual_bill": {
          "type": "number"
         }
        }
       },
       "high": {
        "type": "object",
        "properties": {
         "retailer": {
          "type": "string"
         },
         "plan": {
          "type": "string"
         },
         "annual_bill": {
          "type": "number"
         }
        }
       }
      }
     },
     "top": {
      "type": "string",
      "format": "uri"
     },
     "full_list": {
      "type": "string",
      "format": "uri"
     },
     "page": {
      "type": "string",
      "format": "uri"
     }
    }
   },
   "ElectricityNetworks": {
    "type": "object",
    "properties": {
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "data_as_of": {
      "type": "string",
      "format": "date-time"
     },
     "usage_note": {
      "type": "string"
     },
     "networks": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/ElectricityNetworkSummary"
      }
     }
    },
    "required": [
     "networks"
    ]
   },
   "ElectricityPostcodes": {
    "type": "object",
    "properties": {
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "postcode_count": {
      "type": "integer"
     },
     "note": {
      "type": "string"
     },
     "postcodes": {
      "type": "object",
      "additionalProperties": {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      "description": "Four-digit postcode -> network slugs."
     }
    },
    "required": [
     "postcodes"
    ]
   },
   "ElectricityRetailers": {
    "type": "object",
    "properties": {
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "retailer_count": {
      "type": "integer"
     },
     "retailers": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "retailer_slug": {
         "type": "string"
        },
        "retailer": {
         "type": "string"
        },
        "status": {
         "type": [
          "string",
          "null"
         ]
        },
        "stale": {
         "type": "boolean"
        },
        "plan_count": {
         "type": "integer"
        },
        "priced_count": {
         "type": "integer"
        },
        "restricted_count": {
         "type": "integer"
        },
        "source": {
         "type": [
          "string",
          "null"
         ],
         "format": "uri"
        }
       }
      }
     }
    },
    "required": [
     "retailers"
    ]
   },
   "ElectricityQuestionGuide": {
    "type": "object",
    "properties": {
     "note": {
      "type": "string"
     },
     "questions": {
      "type": "array",
      "items": {
       "type": "object"
      }
     },
     "commentary": {
      "type": "array",
      "items": {
       "type": "object"
      }
     },
     "commentary_note": {
      "type": "string"
     },
     "what_it_cannot_answer_yet": {
      "type": "array",
      "items": {
       "type": "object"
      }
     },
     "context_this_dataset_does_not_hold": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "not_advice": {
      "type": "string"
     }
    }
   }
  }
 }
}
