def METHOD_NAME(self):
    if super().METHOD_NAME():
        # IPv4/IPv6
        recordType = None
        if str(self.current_address).find(':') > 1:
            #IPv6
            recordType = "AAAA"
        else:
            #IPv4
            recordType = "A"
        # get ZoneID
        url = "https://%s/client/v4/zones" % self._services[self.settings.get('service')]
        headers = {
            'User-Agent': 'OPNsense-dyndns'
        }
        # switch between bearer and email/key authentication
        if self.settings.get('username', '').find('@') == -1:
            headers["Authorization"] = "Bearer " + self.settings.get('password')
        else:
            headers["X-Auth-Email"] = self.settings.get('username')
            headers["X-Auth-Key"] = self.settings.get('password')
        req_opts = {
            'url': url,
            'params': {
                'name': self.settings.get('zone')
            },
            'headers': headers
        }
        response = requests.get(**req_opts)
        try:
            payload = response.json()
        except requests.exceptions.JSONDecodeError:
            payload = {}
        if 'success' not in payload:
            syslog.syslog(
                    syslog.LOG_ERR,
                    "Account %s error parsing JSON response [ZoneID] %s" % (self.description, response.text)
                )
            return False
        if not payload.get('success', False):
            syslog.syslog(
                syslog.LOG_ERR,
                "Account %s error receiving ZoneID [%s]" % (self.description, json.dumps(payload.get('errors', {})))
            )
            return False
        zone_id = payload['result'][0]['id']
        if self.is_verbose:
            syslog.syslog(
                syslog.LOG_NOTICE,
                "Account %s ZoneID for %s %s" % (self.description, self.settings.get('zone'), zone_id)
            )
        # Get record ID
        req_opts = {
            'url': f"{req_opts['url']}/{zone_id}/dns_records",
            'params': {
                'name': self.settings.get('hostnames'),
                'type': recordType
            },
            'headers': req_opts['headers']
        }
        response = requests.get(**req_opts)
        try:
            payload = response.json()
        except requests.exceptions.JSONDecodeError:
            payload = {}
        if 'success' not in payload:
            syslog.syslog(
                    syslog.LOG_ERR,
                    "Account %s error parsing JSON response [RecordID] %s" % (self.description, response.text)
                )
            return
        if not payload.get('success', False):
            syslog.syslog(
                syslog.LOG_ERR,
                "Account %s error receiving RecordID [%s]" % (
                    self.description, json.dumps(payload.get('errors', {}))
                )
            )
            return False
        if len(payload['result']) == 0:
            syslog.syslog(
                syslog.LOG_ERR, "Account %s error locating hostname %s [%s]" % (
                    self.description, self.settings.get('hostnames'), recordType
                )
            )
            return False
        record_id = payload['result'][0]['id']
        proxied = payload['result'][0]['proxied']
        if self.is_verbose:
            syslog.syslog(
                syslog.LOG_NOTICE,
                "Account %s RecordID for %s %s" % (self.description, self.settings.get('hostnames'), record_id)
            )
        # Send IP address update
        req_opts = {
            'url': f"{req_opts['url']}/{record_id}",
            'json': {
                'type': recordType,
                'name': self.settings.get('hostnames'),
                'content': str(self.current_address),
                'proxied': proxied
            },
            'headers': req_opts['headers']
        }
        response = requests.put(**req_opts)
        try:
            payload = response.json()
        except requests.exceptions.JSONDecodeError:
            payload = {}
        if 'success' not in payload:
            syslog.syslog(
                    syslog.LOG_ERR,
                    "Account %s error parsing JSON response [UpdateIP] %s" % (self.description, response.text)
                )
            return False
        if payload.get('success', False):
            syslog.syslog(
                syslog.LOG_NOTICE,
                "Account %s set new ip %s [%s]" % (
                    self.description,
                    self.current_address,
                    payload.get('result', {}).get('content', '')
                )
            )
            self.update_state(address=self.current_address)
            return True
        else:
            syslog.syslog(
                syslog.LOG_ERR,
                "Account %s failed to set new ip %s [%s]" % (self.description, self.current_address, response.text)
            )
    return False