diff --git a/backend/address2UPRN/tests/populate_lodgement_dates.py b/backend/address2UPRN/tests/populate_lodgement_dates.py new file mode 100644 index 00000000..0726596b --- /dev/null +++ b/backend/address2UPRN/tests/populate_lodgement_dates.py @@ -0,0 +1,81 @@ +import csv +import json +import os +from pathlib import Path +from urllib.parse import urlencode + +import pandas as pd +from epc_api.client import EpcClient + +FIXTURE_PATH = Path(__file__).parent / "test_data.csv" +SIDECAR_PATH = Path(__file__).parent / "test_lodgement_dates.json" + + +def fetch_postcode_records(client: EpcClient, postcode: str) -> pd.DataFrame: + url = os.path.join(client.domestic.host, "search") + url += "?" + urlencode({"size": 500}) + resp = client.domestic.call(url=url, method="get", params={"postcode": postcode}) + if not resp or "rows" not in resp: + return pd.DataFrame() + return pd.DataFrame(resp["rows"], columns=resp["column-names"]) + + +def main(): + auth_token = os.getenv("EPC_AUTH_TOKEN") + if not auth_token: + raise RuntimeError("EPC_AUTH_TOKEN not set") + + client = EpcClient(auth_token=auth_token) + + sidecar = {} + if SIDECAR_PATH.exists(): + sidecar = json.loads(SIDECAR_PATH.read_text()) + + with open(FIXTURE_PATH, newline="", encoding="utf-8") as f: + rows = list(csv.DictReader(f)) + + by_postcode: dict[str, list[dict]] = {} + for row in rows: + if row["Manual UPRN Code"] == "None": + continue + by_postcode.setdefault(row["Postcode"], []).append(row) + + for postcode, postcode_rows in by_postcode.items(): + print(f"Fetching {postcode} ({len(postcode_rows)} rows)...") + try: + epc_df = fetch_postcode_records(client, postcode) + except Exception as e: + print(f" ERROR: {e}") + continue + + if epc_df.empty: + print(f" No results from old API for {postcode}") + continue + + epc_df["uprn"] = epc_df["uprn"].astype(str).str.replace(r"\.0$", "", regex=True) + + for row in postcode_rows: + key = f"{row['User Input']}|{row['Postcode']}" + if key in sidecar: + continue + + expected_uprn = str(row["Manual UPRN Code"]).strip() + match = epc_df[epc_df["uprn"] == expected_uprn] + + if match.empty: + print(f" WARN: UPRN {expected_uprn} not found in old API for {postcode}") + sidecar[key] = {"lodgement_date": None, "found_in_old_api": False} + else: + lodgement_date = match.iloc[0].get("lodgement-date") + sidecar[key] = { + "lodgement_date": str(lodgement_date) if lodgement_date else None, + "found_in_old_api": True, + } + print(f" {row['User Input']}: {lodgement_date}") + + SIDECAR_PATH.write_text(json.dumps(sidecar, indent=2)) + print(f"\nWritten to {SIDECAR_PATH}") + + +if __name__ == "__main__": + main() diff --git a/backend/address2UPRN/tests/test_csv.py b/backend/address2UPRN/tests/test_csv.py index a8f0b1b4..d8f54c39 100644 --- a/backend/address2UPRN/tests/test_csv.py +++ b/backend/address2UPRN/tests/test_csv.py @@ -1,25 +1,54 @@ # tests/test_address_to_uprn_csv.py import csv +import json import pytest +from datetime import date from pathlib import Path from backend.address2UPRN.main import get_uprn FIXTURE_PATH = Path(__file__).parent / "test_data.csv" +SIDECAR_PATH = Path(__file__).parent / "test_lodgement_dates.json" +NEW_API_CUTOFF = date(2012, 1, 1) + + +def _load_sidecar() -> dict: + if SIDECAR_PATH.exists(): + return json.loads(SIDECAR_PATH.read_text()) + return {} def load_test_cases(): + sidecar = _load_sidecar() with open(FIXTURE_PATH, newline="", encoding="utf-8") as f: reader = csv.DictReader(f) - return [ - pytest.param( - row["User Input"], - row["Postcode"], - row["Manual UPRN Code"], - id=f'{row["User Input"]} [{row["Postcode"]}]', + cases = [] + for row in reader: + key = f"{row['User Input']}|{row['Postcode']}" + entry = sidecar.get(key, {}) + lodgement_date = entry.get("lodgement_date") + + marks = [] + if lodgement_date: + parsed = date.fromisoformat(lodgement_date[:10]) + if parsed < NEW_API_CUTOFF: + marks.append( + pytest.mark.xfail( + reason=f"EPC lodged {lodgement_date} — predates new API coverage (Jan 2012)", + strict=False, + ) + ) + + cases.append( + pytest.param( + row["User Input"], + row["Postcode"], + row["Manual UPRN Code"], + id=f'{row["User Input"]} [{row["Postcode"]}]', + marks=marks, + ) ) - for row in reader - ] + return cases @pytest.mark.parametrize( @@ -31,7 +60,6 @@ def test_uprn_resolution_matches_manual( postcode: str, expected_uprn: str, ): - uprn = get_uprn(user_input, postcode) if uprn: assert uprn == expected_uprn diff --git a/backend/address2UPRN/tests/test_lodgement_dates.json b/backend/address2UPRN/tests/test_lodgement_dates.json new file mode 100644 index 00000000..c58be704 --- /dev/null +++ b/backend/address2UPRN/tests/test_lodgement_dates.json @@ -0,0 +1,1230 @@ +{ + "47 The Fairway|OX16 0RR": { + "lodgement_date": "2010-03-16", + "found_in_old_api": true + }, + "11 REGENT COURT|SL1 3LG": { + "lodgement_date": "2022-05-04", + "found_in_old_api": true + }, + "3/137a Windmill Road|TW8 9NH": { + "lodgement_date": "2025-01-30", + "found_in_old_api": true + }, + "Flat 33|SW18 4BE": { + "lodgement_date": "2022-04-27", + "found_in_old_api": true + }, + "FLAT 1 Brendon Grove|N2 8JE": { + "lodgement_date": "2011-02-17", + "found_in_old_api": true + }, + "Flat 15|KT8 2NE": { + "lodgement_date": "2018-03-26", + "found_in_old_api": true + }, + "FLAT 5 Stonehill Road|W4 3AH": { + "lodgement_date": "2025-09-22", + "found_in_old_api": true + }, + "Flat 10|W4 3AH": { + "lodgement_date": "2023-06-15", + "found_in_old_api": true + }, + "Flat 11|W4 3AH": { + "lodgement_date": "2023-10-19", + "found_in_old_api": true + }, + "Flat 12, Forbes House|W4 3AH": { + "lodgement_date": "2023-10-04", + "found_in_old_api": true + }, + "Flat 13|W4 3AH": { + "lodgement_date": "2012-05-14", + "found_in_old_api": true + }, + "Flat 14|W4 3AH": { + "lodgement_date": "2022-10-15", + "found_in_old_api": true + }, + "Flat 15|W4 3AH": { + "lodgement_date": "2009-08-25", + "found_in_old_api": true + }, + "Flat 16|W4 3AH": { + "lodgement_date": "2012-05-23", + "found_in_old_api": true + }, + "Flat 17|W4 3AH": { + "lodgement_date": "2023-08-31", + "found_in_old_api": true + }, + "Flat 19|W4 3AH": { + "lodgement_date": "2025-07-16", + "found_in_old_api": true + }, + "Flat 20|W4 3AH": { + "lodgement_date": "2024-10-27", + "found_in_old_api": true + }, + "Flat 21|W4 3AH": { + "lodgement_date": "2023-08-08", + "found_in_old_api": true + }, + "Flat 22|W4 3AH": { + "lodgement_date": "2022-10-15", + "found_in_old_api": true + }, + "Flat 23|W4 3AH": { + "lodgement_date": "2022-10-15", + "found_in_old_api": true + }, + "Flat 24|W4 3AH": { + "lodgement_date": "2024-01-12", + "found_in_old_api": true + }, + "10 Douglas Court|SL7 1UQ": { + "lodgement_date": "2018-10-25", + "found_in_old_api": true + }, + "1 Windmill Road|HP17 8JA": { + "lodgement_date": "2009-08-25", + "found_in_old_api": true + }, + "31 Denewood|HP13 7LH": { + "lodgement_date": "2009-03-23", + "found_in_old_api": true + }, + "10, Greenways Drive|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 11|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "12, Greenways Drive|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 13|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 14|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 15|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 16|TW4 5DD": { + "lodgement_date": "2025-02-26", + "found_in_old_api": true + }, + "Flat 17|TW4 5DD": { + "lodgement_date": "2012-11-29", + "found_in_old_api": true + }, + "Flat 18|TW4 5DD": { + "lodgement_date": "2022-12-28", + "found_in_old_api": true + }, + "FLAT 1 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 2 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 3 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 4 Goodstone Court|HA1 4FL": { + "lodgement_date": "2022-12-14", + "found_in_old_api": true + }, + "FLAT 5 Goodstone Court|HA1 4FL": { + "lodgement_date": "2016-10-04", + "found_in_old_api": true + }, + "FLAT 6 Goodstone Court|HA1 4FL": { + "lodgement_date": "2024-06-05", + "found_in_old_api": true + }, + "FLAT 7 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 8 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 9 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 10 Goodstone Court|HA1 4FL": { + "lodgement_date": "2023-09-21", + "found_in_old_api": true + }, + "FLAT 11 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 12 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 13 Goodstone Court|HA1 4FL": { + "lodgement_date": "2022-12-13", + "found_in_old_api": true + }, + "FLAT 14 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 15 Goodstone Court|HA1 4FL": { + "lodgement_date": "2024-02-09", + "found_in_old_api": true + }, + "FLAT 16 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 17 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 18 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 19 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 20 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 21 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 22 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 23 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 24 Goodstone Court|HA1 4FL": { + "lodgement_date": "2024-10-24", + "found_in_old_api": true + }, + "FLAT 25 Goodstone Court|HA1 4FL": { + "lodgement_date": "2020-01-18", + "found_in_old_api": true + }, + "FLAT 26 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 27 Goodstone Court|HA1 4FL": { + "lodgement_date": "2022-11-04", + "found_in_old_api": true + }, + "FLAT 28 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 29 Goodstone Court|HA1 4FL": { + "lodgement_date": "2023-10-13", + "found_in_old_api": true + }, + "FLAT 30 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 31 Goodstone Court|HA1 4FL": { + "lodgement_date": "2023-04-19", + "found_in_old_api": true + }, + "FLAT 32 Goodstone Court|HA1 4FL": { + "lodgement_date": "2025-11-18", + "found_in_old_api": true + }, + "FLAT 33 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 34 Goodstone Court|HA1 4FL": { + "lodgement_date": "2022-09-19", + "found_in_old_api": true + }, + "FLAT 35 Goodstone Court|HA1 4FL": { + "lodgement_date": "2021-10-13", + "found_in_old_api": true + }, + "FLAT 36 Goodstone Court|HA1 4FL": { + "lodgement_date": "2022-10-12", + "found_in_old_api": true + }, + "FLAT 37 Goodstone Court|HA1 4FL": { + "lodgement_date": "2024-08-26", + "found_in_old_api": true + }, + "FLAT 38 Goodstone Court|HA1 4FL": { + "lodgement_date": "2023-05-26", + "found_in_old_api": true + }, + "FLAT 39 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 40 Goodstone Court|HA1 4FL": { + "lodgement_date": "2023-10-05", + "found_in_old_api": true + }, + "FLAT 41 Goodstone Court|HA1 4FL": { + "lodgement_date": "2025-11-24", + "found_in_old_api": true + }, + "FLAT 42 Goodstone Court|HA1 4FL": { + "lodgement_date": "2012-11-06", + "found_in_old_api": true + }, + "FLAT 43 Goodstone Court|HA1 4FL": { + "lodgement_date": "2025-07-08", + "found_in_old_api": true + }, + "30c, Bosanquet Close|UB8 3PE": { + "lodgement_date": "2019-05-27", + "found_in_old_api": true + }, + "30e, Bosanquet Close|UB8 3PE": { + "lodgement_date": "2024-07-30", + "found_in_old_api": true + }, + "13 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2025-07-05", + "found_in_old_api": true + }, + "14 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2012-07-18", + "found_in_old_api": true + }, + "15 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2012-06-11", + "found_in_old_api": true + }, + "16 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2022-07-01", + "found_in_old_api": true + }, + "17 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2025-01-07", + "found_in_old_api": true + }, + "18 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2012-07-18", + "found_in_old_api": true + }, + "19 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2025-03-22", + "found_in_old_api": true + }, + "20 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2022-08-15", + "found_in_old_api": true + }, + "21 Stubwick Court, Old Saw Mill Place|HP6 6FF": { + "lodgement_date": "2012-07-18", + "found_in_old_api": true + }, + "90a Murray Road|W5 4DA": { + "lodgement_date": "2013-12-12", + "found_in_old_api": true + }, + "Flat 1, 6 Wolverton Gardens|W5 3LJ": { + "lodgement_date": "2017-10-13", + "found_in_old_api": true + }, + "1, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "10, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "20, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "2, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "3, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "4, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "5, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "6, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "7, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "8, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "9, Monsted House|UB1 1FG": { + "lodgement_date": "2019-02-08", + "found_in_old_api": true + }, + "1 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "2 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "3 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "4 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "5 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "6 Cullis House, 1, Accolade Avenue|UB1 1FH": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "1 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-10", + "found_in_old_api": true + }, + "2 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-10", + "found_in_old_api": true + }, + "3 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "4 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "5 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "6 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "7 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "8 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "9 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "10 Genteel House Samara Drive|UB1 1FJ": { + "lodgement_date": "2019-05-13", + "found_in_old_api": true + }, + "Flat 1 Ash Tree House, 2, Thompson Avenue|SE5 0TE": { + "lodgement_date": "2018-09-05", + "found_in_old_api": true + }, + "Flat 3 ASH TREE HOUSE|SE5 0TE": { + "lodgement_date": "2018-09-05", + "found_in_old_api": true + }, + "Flat 5 ASH TREE HOUSE|SE5 0TE": { + "lodgement_date": "2019-09-12", + "found_in_old_api": true + }, + "Flat 8 ASH TREE HOUSE|SE5 0TE": { + "lodgement_date": "2011-10-26", + "found_in_old_api": true + }, + "Flat 12 ASH TREE HOUSE|SE5 0TE": { + "lodgement_date": "2018-09-05", + "found_in_old_api": true + }, + "FLAT 1 599 HARROW ROAD|W10 4RA": { + "lodgement_date": "2017-01-12", + "found_in_old_api": true + }, + "FLAT 2 599 HARROW ROAD|W10 4RA": { + "lodgement_date": "2020-07-28", + "found_in_old_api": true + }, + "FLAT 5 599 HARROW ROAD|W10 4RA": { + "lodgement_date": "2017-01-12", + "found_in_old_api": true + }, + "Flat 1, Ohio Building|SE13 7RX": { + "lodgement_date": "2023-08-15", + "found_in_old_api": true + }, + "Flat 2, Ohio Building|SE13 7RX": { + "lodgement_date": "2017-06-09", + "found_in_old_api": true + }, + "Apartment 1 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2017-01-05", + "found_in_old_api": true + }, + "Apartment 2 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2014-01-22", + "found_in_old_api": true + }, + "Apartment 3 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 4 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2017-01-05", + "found_in_old_api": true + }, + "Apartment 5 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 6 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 7 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2022-10-24", + "found_in_old_api": true + }, + "Apartment 8 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 9 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 10 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 11 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2011-08-17", + "found_in_old_api": true + }, + "Apartment 12 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 13 Block B, 105, Benwell Road|N7 7BW": { + "lodgement_date": "2009-02-25", + "found_in_old_api": true + }, + "Apartment 1 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2023-07-19", + "found_in_old_api": true + }, + "Apartment 2 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2022-10-20", + "found_in_old_api": true + }, + "Apartment 3 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 4 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 5 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 6 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2012-11-08", + "found_in_old_api": true + }, + "Apartment 7 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2015-08-30", + "found_in_old_api": true + }, + "Apartment 8 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2020-08-02", + "found_in_old_api": true + }, + "Apartment 9 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2021-10-12", + "found_in_old_api": true + }, + "Apartment 10 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 11 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 12 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2022-02-22", + "found_in_old_api": true + }, + "Apartment 13 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 14 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 15 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 16 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2009-05-15", + "found_in_old_api": true + }, + "Apartment 17Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2019-01-22", + "found_in_old_api": true + }, + "Apartment 18 Block D, 32, Hornsey Road|N7 7AT": { + "lodgement_date": "2013-06-03", + "found_in_old_api": true + }, + "FLAT B 158 LEAHURST ROAD|SE13 5NL": { + "lodgement_date": "2014-01-24", + "found_in_old_api": true + }, + "2 COLLEGE HOUSE|CM7 1JS": { + "lodgement_date": "2017-01-12", + "found_in_old_api": true + }, + "3 COLLEGE HOUSE|CM7 1JS": { + "lodgement_date": "2017-01-12", + "found_in_old_api": true + }, + "2 Anita Street|M4 5DU": { + "lodgement_date": "2019-10-18", + "found_in_old_api": true + }, + "5 Anita Street|M4 5DU": { + "lodgement_date": "2012-12-21", + "found_in_old_api": true + }, + "6 Anita Street|M4 5DU": { + "lodgement_date": "2021-02-16", + "found_in_old_api": true + }, + "10 Anita Street|M4 5DU": { + "lodgement_date": "2021-07-01", + "found_in_old_api": true + }, + "12 Anita Street|M4 5DU": { + "lodgement_date": "2025-08-08", + "found_in_old_api": true + }, + "26 Anita Street|M4 5DU": { + "lodgement_date": "2010-06-25", + "found_in_old_api": true + }, + "33 Anita Street|M4 5DU": { + "lodgement_date": "2017-03-10", + "found_in_old_api": true + }, + "35 Anita Street|M4 5DU": { + "lodgement_date": "2015-11-18", + "found_in_old_api": true + }, + "36 Anita Street|M4 5DU": { + "lodgement_date": "2013-09-12", + "found_in_old_api": true + }, + "23 George Leigh Street|M4 5DR": { + "lodgement_date": "2025-03-11", + "found_in_old_api": true + }, + "35 George Leigh Street|M4 5DR": { + "lodgement_date": "2024-05-29", + "found_in_old_api": true + }, + "39 George Leigh Street|M4 5DR": { + "lodgement_date": "2024-05-28", + "found_in_old_api": true + }, + "51 George Leigh Street|M4 5DR": { + "lodgement_date": "2022-02-03", + "found_in_old_api": true + }, + "1a, Victoria Square|M4 5DX": { + "lodgement_date": "2016-01-08", + "found_in_old_api": true + }, + "4a, Victoria Square|M4 5DX": { + "lodgement_date": "2012-09-19", + "found_in_old_api": true + }, + "5a Victoria Square|M4 5DX": { + "lodgement_date": "2012-06-25", + "found_in_old_api": true + }, + " 6a Victoria Square|M4 5DX": { + "lodgement_date": "2023-02-13", + "found_in_old_api": true + }, + "7a Victoria Square|M4 5DX": { + "lodgement_date": "2017-03-15", + "found_in_old_api": true + }, + "8a Victoria Square|M4 5DX": { + "lodgement_date": "2019-11-25", + "found_in_old_api": true + }, + "9a Victoria Square|M4 5DX": { + "lodgement_date": "2026-02-24", + "found_in_old_api": true + }, + "10a Victoria Square|M4 5DX": { + "lodgement_date": "2013-10-16", + "found_in_old_api": true + }, + "11a Victoria Square|M4 5DX": { + "lodgement_date": "2015-11-06", + "found_in_old_api": true + }, + "12a Victoria Square|M4 5DX": { + "lodgement_date": "2022-11-08", + "found_in_old_api": true + }, + "13a Victoria Square|M4 5DX": { + "lodgement_date": "2025-04-27", + "found_in_old_api": true + }, + "14a Victoria Square|M4 5DX": { + "lodgement_date": "2010-11-09", + "found_in_old_api": true + }, + "15a Victoria Square|M4 5DX": { + "lodgement_date": "2012-03-26", + "found_in_old_api": true + }, + "16a Victoria Square|M4 5DX": { + "lodgement_date": "2009-05-28", + "found_in_old_api": true + }, + "17a Victoria Square|M4 5DX": { + "lodgement_date": "2012-12-20", + "found_in_old_api": true + }, + "18a Victoria Square|M4 5DX": { + "lodgement_date": "2022-07-21", + "found_in_old_api": true + }, + "19a Victoria Square|M4 5DX": { + "lodgement_date": "2009-08-18", + "found_in_old_api": true + }, + "20a Victoria Square|M4 5DX": { + "lodgement_date": "2014-05-27", + "found_in_old_api": true + }, + "21a Victoria Square|M4 5DY": { + "lodgement_date": "2010-04-08", + "found_in_old_api": true + }, + "23a Victoria Square|M4 5DY": { + "lodgement_date": "2016-04-05", + "found_in_old_api": true + }, + "24a Victoria Square|M4 5DY": { + "lodgement_date": "2022-03-23", + "found_in_old_api": true + }, + "25a Victoria Square|M4 5DY": { + "lodgement_date": "2024-10-13", + "found_in_old_api": true + }, + "26a Victoria Square|M4 5DY": { + "lodgement_date": "2024-03-25", + "found_in_old_api": true + }, + "27a Victoria Square|M4 5DY": { + "lodgement_date": "2009-10-05", + "found_in_old_api": true + }, + "29a Victoria Square|M4 5DY": { + "lodgement_date": "2024-05-27", + "found_in_old_api": true + }, + "30a Victoria Square|M4 5DY": { + "lodgement_date": "2011-09-07", + "found_in_old_api": true + }, + "31a Victoria Square|M4 5DY": { + "lodgement_date": "2010-12-09", + "found_in_old_api": true + }, + "32a Victoria Square|M4 5DY": { + "lodgement_date": "2021-02-17", + "found_in_old_api": true + }, + "33a Victoria Square|M4 5DY": { + "lodgement_date": "2011-04-05", + "found_in_old_api": true + }, + "34a Victoria Square|M4 5DY": { + "lodgement_date": "2021-08-13", + "found_in_old_api": true + }, + "36a Victoria Square|M4 5DY": { + "lodgement_date": "2011-04-05", + "found_in_old_api": true + }, + "37a Victoria Square|M4 5DY": { + "lodgement_date": "2018-07-02", + "found_in_old_api": true + }, + "38a Victoria Square|M4 5DY": { + "lodgement_date": "2010-02-02", + "found_in_old_api": true + }, + "39a Victoria Square|M4 5DY": { + "lodgement_date": "2018-01-04", + "found_in_old_api": true + }, + "41a Victoria Square|M4 5DY": { + "lodgement_date": "2011-05-23", + "found_in_old_api": true + }, + "42a Victoria Square|M4 5DY": { + "lodgement_date": "2010-10-14", + "found_in_old_api": true + }, + "43a Victoria Square|M4 5DY": { + "lodgement_date": "2018-10-11", + "found_in_old_api": true + }, + "44a Victoria Square|M4 5DY": { + "lodgement_date": "2010-06-08", + "found_in_old_api": true + }, + "45a Victoria Square|M4 5DY": { + "lodgement_date": "2023-03-08", + "found_in_old_api": true + }, + "46a Victoria Square|M4 5DY": { + "lodgement_date": "2010-12-09", + "found_in_old_api": true + }, + "47a Victoria Square|M4 5DY": { + "lodgement_date": "2010-02-09", + "found_in_old_api": true + }, + "48a Victoria Square|M4 5DY": { + "lodgement_date": "2011-04-12", + "found_in_old_api": true + }, + "49a Victoria Square|M4 5DY": { + "lodgement_date": "2010-11-09", + "found_in_old_api": true + }, + "50a Victoria Square|M4 5DY": { + "lodgement_date": "2025-09-06", + "found_in_old_api": true + }, + "51a Victoria Square|M4 5DY": { + "lodgement_date": "2009-10-05", + "found_in_old_api": true + }, + "52a Victoria Square|M4 5DY": { + "lodgement_date": "2010-12-17", + "found_in_old_api": true + }, + "53a Victoria Square|M4 5DY": { + "lodgement_date": "2022-11-10", + "found_in_old_api": true + }, + "54a Victoria Square|M4 5DY": { + "lodgement_date": "2021-01-08", + "found_in_old_api": true + }, + "55a Victoria Square|M4 5DY": { + "lodgement_date": "2009-08-18", + "found_in_old_api": true + }, + "56a Victoria Square|M4 5DZ": { + "lodgement_date": "2019-03-15", + "found_in_old_api": true + }, + "58a Victoria Square|M4 5DZ": { + "lodgement_date": "2018-11-14", + "found_in_old_api": true + }, + "59a Victoria Square|M4 5DZ": { + "lodgement_date": "2013-11-26", + "found_in_old_api": true + }, + "60a Victoria Square|M4 5DZ": { + "lodgement_date": "2024-06-12", + "found_in_old_api": true + }, + "61a Victoria Square|M4 5DZ": { + "lodgement_date": "2024-08-05", + "found_in_old_api": true + }, + "62a Victoria Square|M4 5DZ": { + "lodgement_date": "2013-05-24", + "found_in_old_api": true + }, + "64a Victoria Square|M4 5DZ": { + "lodgement_date": "2021-07-29", + "found_in_old_api": true + }, + "65a Victoria Square|M4 5DZ": { + "lodgement_date": "2011-08-26", + "found_in_old_api": true + }, + "68a Victoria Square|M4 5DZ": { + "lodgement_date": "2022-03-29", + "found_in_old_api": true + }, + "69a Victoria Square|M4 5DZ": { + "lodgement_date": "2011-01-19", + "found_in_old_api": true + }, + "70a Victoria Square|M4 5DZ": { + "lodgement_date": "2011-07-27", + "found_in_old_api": true + }, + "71a Victoria Square|M4 5DZ": { + "lodgement_date": "2016-11-22", + "found_in_old_api": true + }, + "72a Victoria Square|M4 5DZ": { + "lodgement_date": "2019-01-07", + "found_in_old_api": true + }, + "73a Victoria Square|M4 5DZ": { + "lodgement_date": "2014-07-25", + "found_in_old_api": true + }, + "75a Victoria Square|M4 5DZ": { + "lodgement_date": "2016-01-20", + "found_in_old_api": true + }, + "76a Victoria Square|M4 5DZ": { + "lodgement_date": "2018-01-26", + "found_in_old_api": true + }, + "78a Victoria Square|M4 5DZ": { + "lodgement_date": "2011-06-02", + "found_in_old_api": true + }, + "79a Victoria Square|M4 5DZ": { + "lodgement_date": "2022-01-26", + "found_in_old_api": true + }, + "80a Victoria Square|M4 5DZ": { + "lodgement_date": "2018-11-05", + "found_in_old_api": true + }, + "81a Victoria Square|M4 5DZ": { + "lodgement_date": "2017-03-05", + "found_in_old_api": true + }, + "83a Victoria Square|M4 5DZ": { + "lodgement_date": "2012-05-01", + "found_in_old_api": true + }, + "85a Victoria Square|M4 5DZ": { + "lodgement_date": "2009-10-21", + "found_in_old_api": true + }, + "86a Victoria Square|M4 5DZ": { + "lodgement_date": "2024-05-29", + "found_in_old_api": true + }, + "87a Victoria Square|M4 5DZ": { + "lodgement_date": "2025-07-13", + "found_in_old_api": true + }, + "89a Victoria Square|M4 5DZ": { + "lodgement_date": "2016-05-12", + "found_in_old_api": true + }, + "90a Victoria Square|M4 5DZ": { + "lodgement_date": "2012-05-09", + "found_in_old_api": true + }, + "91a Victoria Square|M4 5DZ": { + "lodgement_date": "2025-04-30", + "found_in_old_api": true + }, + "92a Victoria Square|M4 5DZ": { + "lodgement_date": "2021-07-29", + "found_in_old_api": true + }, + "93a Victoria Square|M4 5EA": { + "lodgement_date": "2013-02-26", + "found_in_old_api": true + }, + "95a Victoria Square|M4 5EA": { + "lodgement_date": "2020-09-06", + "found_in_old_api": true + }, + "96a Victoria Square|M4 5EA": { + "lodgement_date": "2022-06-30", + "found_in_old_api": true + }, + "97a Victoria Square|M4 5EA": { + "lodgement_date": "2016-09-05", + "found_in_old_api": true + }, + "98a Victoria Square|M4 5EA": { + "lodgement_date": "2019-12-19", + "found_in_old_api": true + }, + "99a Victoria Square|M4 5EA": { + "lodgement_date": "2009-03-05", + "found_in_old_api": true + }, + "100a Victoria Square|M4 5EA": { + "lodgement_date": "2011-03-31", + "found_in_old_api": true + }, + "103a Victoria Square|M4 5EA": { + "lodgement_date": "2009-03-05", + "found_in_old_api": true + }, + "104a Victoria Square|M4 5EA": { + "lodgement_date": "2010-01-21", + "found_in_old_api": true + }, + "106a Victoria Square|M4 5EA": { + "lodgement_date": "2015-12-10", + "found_in_old_api": true + }, + "107a Victoria Square|M4 5EA": { + "lodgement_date": "2013-07-01", + "found_in_old_api": true + }, + "108a Victoria Square|M4 5EA": { + "lodgement_date": "2023-03-01", + "found_in_old_api": true + }, + "109a Victoria Square|M4 5EA": { + "lodgement_date": "2010-03-24", + "found_in_old_api": true + }, + "110a Victoria Square|M4 5EA": { + "lodgement_date": "2019-02-25", + "found_in_old_api": true + }, + "111a Victoria Square|M4 5EA": { + "lodgement_date": "2010-02-01", + "found_in_old_api": true + }, + "113a Victoria Square|M4 5EA": { + "lodgement_date": "2012-11-21", + "found_in_old_api": true + }, + "114a Victoria Square|M4 5EA": { + "lodgement_date": "2013-12-06", + "found_in_old_api": true + }, + "115a Victoria Square|M4 5EA": { + "lodgement_date": "2022-08-25", + "found_in_old_api": true + }, + "116a Victoria Square|M4 5EA": { + "lodgement_date": "2011-02-25", + "found_in_old_api": true + }, + "119a Victoria Square|M4 5EA": { + "lodgement_date": "2024-04-12", + "found_in_old_api": true + }, + "120a Victoria Square|M4 5EA": { + "lodgement_date": "2011-04-04", + "found_in_old_api": true + }, + "121a Victoria Square|M4 5EA": { + "lodgement_date": "2010-11-09", + "found_in_old_api": true + }, + "122a Victoria Square|M4 5EA": { + "lodgement_date": "2012-05-01", + "found_in_old_api": true + }, + "123a Victoria Square|M4 5EA": { + "lodgement_date": "2022-01-12", + "found_in_old_api": true + }, + "125a Victoria Square|M4 5EA": { + "lodgement_date": "2023-11-22", + "found_in_old_api": true + }, + "126a Victoria Square|M4 5EA": { + "lodgement_date": "2010-08-24", + "found_in_old_api": true + }, + "127a Victoria Square|M4 5EA": { + "lodgement_date": "2020-03-01", + "found_in_old_api": true + }, + "128a Victoria Square|M4 5EA": { + "lodgement_date": "2015-02-04", + "found_in_old_api": true + }, + "129a Victoria Square|M4 5EA": { + "lodgement_date": "2010-07-07", + "found_in_old_api": true + }, + "130a Victoria Square|M4 5FA": { + "lodgement_date": "2026-02-11", + "found_in_old_api": true + }, + "131a Victoria Square|M4 5FA": { + "lodgement_date": "2025-05-29", + "found_in_old_api": true + }, + "132a Victoria Square|M4 5FA": { + "lodgement_date": "2019-12-24", + "found_in_old_api": true + }, + "134a Victoria Square|M4 5FA": { + "lodgement_date": "2011-08-18", + "found_in_old_api": true + }, + "135a Victoria Square|M4 5FA": { + "lodgement_date": "2019-09-05", + "found_in_old_api": true + }, + "136a Victoria Square|M4 5FA": { + "lodgement_date": "2025-02-14", + "found_in_old_api": true + }, + "137a Victoria Square|M4 5FA": { + "lodgement_date": "2024-07-17", + "found_in_old_api": true + }, + "138a Victoria Square|M4 5FA": { + "lodgement_date": "2023-10-11", + "found_in_old_api": true + }, + "139a Victoria Square|M4 5FA": { + "lodgement_date": "2021-06-22", + "found_in_old_api": true + }, + "140a Victoria Square|M4 5FA": { + "lodgement_date": "2020-06-15", + "found_in_old_api": true + }, + "141a Victoria Square|M4 5FA": { + "lodgement_date": "2025-12-22", + "found_in_old_api": true + }, + "142a Victoria Square|M4 5FA": { + "lodgement_date": "2025-12-22", + "found_in_old_api": true + }, + "143a Victoria Square|M4 5FA": { + "lodgement_date": "2023-01-18", + "found_in_old_api": true + }, + "144a Victoria Square|M4 5FA": { + "lodgement_date": "2011-04-04", + "found_in_old_api": true + }, + "146a Victoria Square|M4 5FA": { + "lodgement_date": "2022-09-21", + "found_in_old_api": true + }, + "147a Victoria Square|M4 5FA": { + "lodgement_date": "2011-05-04", + "found_in_old_api": true + }, + "148a Victoria Square|M4 5FA": { + "lodgement_date": "2014-11-18", + "found_in_old_api": true + }, + "149a Victoria Square|M4 5FA": { + "lodgement_date": "2009-12-14", + "found_in_old_api": true + }, + "150a Victoria Square|M4 5FA": { + "lodgement_date": "2009-12-14", + "found_in_old_api": true + }, + "152a Victoria Square|M4 5FA": { + "lodgement_date": "2017-06-23", + "found_in_old_api": true + }, + "154a Victoria Square|M4 5FA": { + "lodgement_date": "2025-04-29", + "found_in_old_api": true + }, + "156a Victoria Square|M4 5FA": { + "lodgement_date": "2011-04-05", + "found_in_old_api": true + }, + "157a Victoria Square|M4 5FA": { + "lodgement_date": "2023-09-11", + "found_in_old_api": true + }, + "158a Victoria Square|M4 5FA": { + "lodgement_date": "2021-12-07", + "found_in_old_api": true + }, + "160a Victoria Square|M4 5FA": { + "lodgement_date": "2011-02-04", + "found_in_old_api": true + }, + "163a Victoria Square|M4 5FA": { + "lodgement_date": "2010-02-02", + "found_in_old_api": true + }, + "164a Victoria Square|M4 5FA": { + "lodgement_date": "2020-10-19", + "found_in_old_api": true + }, + "165a Victoria Square|M4 5FA": { + "lodgement_date": "2019-12-13", + "found_in_old_api": true + } +} \ No newline at end of file