def METHOD_NAME(self):
    s = requests.Session()
    # Get session cookies
    r0 = s.get(API_URLS["session"], headers=HEADERS)
    r0.raise_for_status()
    # Get session key from the PHPSESSID (in the cookies)
    authRequest = s.get(API_URLS["auth"], headers=HEADERS)
    authData = authRequest.json()
    sessionKey = authData["auth-session"]
    now = time.time_ns() // 1_000_000
    urlNonce = str(now)
    # Get AuthenticateResponse nonce
    authRespRequest = s.post(
        API_URLS["authResp"] + "&_" + urlNonce + "&sid=" + sessionKey,
        headers=HEADERS,
    )
    authenticateResponseNonce = self.achieveFormsData(authRespRequest)["0"][
        "AuthenticateResponse"
    ]
    # This payload is used for all subsequent requests
    uprnPayload = {
        "formValues": {
            "Section 1": {
                "AuthenticateResponse": {
                    "name": "AuthenticateResponse",
                    "value": authenticateResponseNonce,
                },
                "UPRN": {"name": "UPRN", "value": self._uprn},
            }
        }
    }
    # Query service types with UPRN and map to generic service name
    #
    # Not all serviced UPRNs within the area share the same service type names!
    # so we need to map them back to a generic service for the icon map...
    #
    # E.g. In Chester:
    #  - Empty Black Sacks -> Domestic
    #  - Empty Recycling   -> Recycling
    #  - Empty 23L Caddy   -> Food
    #  - Empty 240L Garden -> Garden
    #
    # and in a different area of Cheshire West, it could be:
    #  - Empty 180l Domestic -> Domestic
    #  - Empty 180L Blue     -> Recycling
    #  - Empty 180L Red      -> Recycling
    #  - Empty 23L Caddy     -> Food
    #  - Empty 240L Garden   -> Garden
    scheduleRequest = s.post(
        API_URLS["serviceTypes"] + "&_" + urlNonce + "&sid=" + sessionKey,
        headers=HEADERS,
        json=uprnPayload,
    )
    data = self.achieveFormsData(scheduleRequest)
    if len(data) < 1:
        _LOGGER.warn("couldn't find service data for UPRN %s", self._uprn)
        return []
    # Map non-generic service type names to generic service type
    serviceTypeToGenericService = {}
    for service in data.values():
        genericService = service["service"].strip()
        if ICON_MAP.get(genericService) is not None:
            serviceTypeToGenericService[service["serviceType"]] = genericService
    # Now query the jobs (collection schedule)
    scheduleRequest = s.post(
        API_URLS["schedule"] + "&_" + urlNonce + "&sid=" + sessionKey,
        headers=HEADERS,
        json=uprnPayload,
    )
    data = self.achieveFormsData(scheduleRequest)
    if len(data) < 1:
        _LOGGER.warn("couldn't find collection data for UPRN %s", self._uprn)
        return []
    entries = []
    for collection in data.values():
        date = datetime.strptime(
            collection["collectionDateTime"], "%Y-%m-%dT%H:%M:%S"
        ).date()
        collection_type = collection["serviceType"]
        # Only emit the collection if it's a recognised collection type (I.e. Ignore: "BULKY BOOKINGS" and whatever else crops up)
        if serviceTypeToGenericService.get(collection_type) is not None:
            collection_type_generic = serviceTypeToGenericService[collection_type]
            entries.append(
                Collection(
                    date=date,
                    t=collection_type,
                    icon=ICON_MAP.get(collection_type_generic),
                )
            )
        else:
            _LOGGER.debug("unknown collection_type %s", collection_type)
    return entries